字典
字典是无序的
字典关联性强
字典元素为键值对 且 键 唯一 键 是 可哈西的(不可变数据类型:int str bool tuple)
不可哈西(list dict set)
字典是唯一一个映射的数据类型
1 dic_1 = {'name':'Tom','age':20} 2 dic_2 = {'class_1':['Tom','xiaoming','ligang'],'class_2':['张三','李四','王五']} 3 4 键是唯一的 5 dic = {'name':'Tom','name':'李刚','age':20} 6 print(dic) #两个'name'
一、增
dic[key] = value
原字典已经存在key 覆盖
如果没有,则添加
1 dic = {'name':'Tom','son':'李刚','age':20} 2 dic['job'] = 'teacher' 3 print(dic) 4 # {'name': 'Tom', 'son': '李刚', 'age': 20, 'job': 'teacher'} 5 dic = {'name':'Tom','son':'李刚','age':20} 6 dic['son'] = '张三' 7 print(dic) 8 # {'name': 'Tom', 'son': '张三', 'age': 20}
setdefault(self, key, default = None)
键没有,添加
已经有键,不操作
1 dic = {'name':'Tom','son':'李刚','age':20} 2 dic.setdefault('hobby') #default没有的情况,默认为None 3 # {'name': 'Tom', 'son': '李刚', 'age': 20, 'hobby': None} #None 就是空 分配给一个特殊的所有的空的公共内存空间 4 dic = {'name':'Tom','son':'李刚','age':20} 5 dic.setdefault('hobby','girls') 6 # {'name': 'Tom', 'son': '李刚', 'age': 20, 'hobby': 'girls'} 7 dic = {'name':'Tom','son':'李刚','age':20} 8 dic.setdefault('name','王五') #字典中已经有'name' key ,就不对字典做任何修改 9 # {'name': 'Tom', 'son': '李刚', 'age': 20} #
二、删
pop(self, key)
通过键删除
如果键不存在,报错

1 dic = {'name':'Tom','son':'李刚','age':20} 2 print(dic.pop('name')) #通过键删除 3 print(dic) 4 # Tom 5 # {'son': '李刚', 'age': 20} 6 7 dic = {'name':'Tom','son':'李刚','age':20} 8 print(dic.pop('city')) #如果键不存在,报错 KeyError:*** 9 print(dic) 10 11 # Traceback (most recent call last): 12 # File "D:/Demo/test2.py", line 2, in <module> 13 # print(dic.pop('city')) 14 # KeyError: 'city' 15 16 dic = {'name':'Tom','son':'李刚','age':20} 17 print(dic.pop('city',None)) #加上返回值None,且键不存在,说明key不存在, 当然也可以把None换成 '不存在' 18 print(dic) 19 # None 20 # {'name': 'Tom', 'son': '李刚', 'age': 20}
popitem(self)
随机删 有返回值(被删除的键值对)
dic = {'name':'Tom','son':'李刚','age':20} print(dic.popitem()) print(dic) # ('age', 20) # {'name': 'Tom', 'son': '李刚'}
clear(self)
清空
1 dic = {'name':'Tom','son':'李刚','age':20} 2 print(dic.clear()) 3 print(dic) 4 # None 5 # {}
del
1 dic = {'name':'Tom','son':'李刚','age':20} 2 del dic['name'] 3 print(dic) 4 # {'son': '李刚', 'age': 20}
del dic #删除整个字典
三、改
就是增功能中的覆盖
1 dic = {'name':'Tom','son':'李刚','age':20} 2 dic['name'] = '王五' 3 print(dic) 4 # {'name': '王五', 'son': '李刚', 'age': 20}
更新 update(self, E=None, **F)
覆盖并添加
1 dic1 = {'name':'Tom','age':20} 2 dic2 = {'name':'王五','pc':8888} 3 dic1.update(dic2) 4 print(dic1) #dic1变了 dic2没有变 5 print(dic2) 6 # {'name': '王五', 'age': 20, 'pc': 8888} 7 # {'name': '王五', 'pc': 8888}
四、查
get(self, k: _KT)
1 dic = {'name':'Tom','age':20} 2 print(dic.get('name')) 3 # Tom 4 5 dic = {'name':'Tom','age':20} 6 print(dic.get('heheh')) 7 # None 8 9 dic = {'name':'Tom','age':20} 10 print(dic.get('heheh','键不存在 -1')) 11 # 键不存在 -1
for 循环
得到的是列表,然后列表就可以用for循环打印

1 #1. keys() 2 dic = {'name':'Tom','age':20,'job':'teacher'} 3 for key in dic: # for i in dic for key in dic.keys() 4 print(key) # print(i) print(key) 一样的效果 5 # name 6 # age 7 # job 8 #2. values() 9 dic = {'name':'Tom','age':20,'job':'teacher'} 10 print(dic.values(),type(dic.values())) #直接print 11 # dict_values(['Tom', 20, 'teacher']) <class 'dict_values'> 12 for value in dic.values(): 13 print(value) 14 # Tom 15 # 20 16 # teacher 17 #3. items() 18 19 dic = {'name':'Tom','age':20,'job':'teacher'} 20 print(dic.items(),type(dic.items())) 21 # dict_items([('name', 'Tom'), ('age', 20), ('job', 'teacher')]) <class 'dict_items'> 22 for i in dic.items(): 23 print(i) 24 # ('name', 'Tom') 25 # ('age', 20) 26 # ('job', 'teacher') 27 #-------------------- 28 a,b = [1,2] 29 print(a,b) #分别赋值 30 # 1 2 31 32 dic = {'name':'Tom','age':20,'job':'teacher'} 33 for key, value in dic.items(): #key, value 分别接收数据 34 print(key,value) 35 # name Tom 36 # age 20 37 # job teacher 38 print(type(key),type(value)) #得到的是字符串 39 # <class 'str'> <class 'str'>