字典的使用
字典是无序的,通过键值索引
字典的简单操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 dicto = { 2 'name1':'101q', 3 'name2':'102q', 4 'name3':'103q', 5 'name4':'104q', 6 'name5':'105q' 7 } 8 9 print(dicto) 10 print(dicto['name3']) # 查找 103q 11 # 如果不确定查找的一定存在,最好使用get方法 12 print(dicto.get("name",'sorry')) # 如果不存在返回None,可以设定返回值,返回sorry 13 14 dicto["name2"] = '10022q' 15 print(dicto) # 修改 {'name1': '101q', 'name2': '10022q', 'name3': '103q', 'name4': '104q', 'name5': '105q'} 16 17 # 删除 18 # del python内置删除方法,del dicto["name1"] 19 20 dicto.pop("name1") # 指定删除name1,popitem 随机删除 21 22 23 # 判断字典是否含有 24 print('name2' in dicto)
多级字典操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 dicto = { 2 'name1':{'user1':'password1'}, 3 'name2':{'user2':'password2'}, 4 'name3':{'user3':'password3'}, 5 'name4':{'user4':'password4'}, 6 'name5':{'user5':'password5'} 7 } 8 9 print(dicto['name1']['user1']) #password1
key值最好不要使用中文
对key 和value 的操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 dicto = { 2 'name1':'101q', 3 'name2':'102q', 4 'name3':'103q', 5 'name4':'104q', 6 'name5':'105q' 7 } 8 9 print(dicto) 10 print(dicto.values()) # 打印所有的值 dict_values(['101q', '102q', '103q', '104q', '105q']) 11 12 # dcito.key 打印键值 13 dicto.setdefault("name","qq") 14 print(dicto)# setdefault 查找是否含有name 的key 如果有则字典不改变,如果没有则添加
字典的合并
使用update ,有相同key的则更新,没有则添加
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 dicto = { 2 'name1':'101q', 3 'name2':'102q', 4 'name3':'103q', 5 'name4':'104q', 6 'name5':'105q' 7 } 8 9 d = { 10 'name1':'小马哥', 11 'name':'大马', 12 1:2 13 } 14 15 c = { 16 'ab':'cd', 17 'dd':'cc', 18 6:5 19 } 20 21 print(dicto) 22 23 dicto.update(d) # 返回值是None 24 print(dicto) # {'name1': '小马哥', 'name2': '102q', 'name3': '103q', 'name4': '104q', 'name5': '105q', 'name': '大马', 1: 2} 25 26 #dicto.update(d,c) # 出错 TypeError: update expected at most 1 arguments, got 2 27 #print(dicto) # 只能有一个参数 28 29 30 print(dicto.items()) # 把字典转换成列表 31 32 for i in dicto.items(): 33 print(i) 34 35 ''' ('name1', '小马哥') 36 ('name2', '102q') 37 ('name3', '103q') 38 ('name4', '104q') 39 ('name5', '105q') 40 ('name', '大马') 41 (1, 2) 42 '''
fromkeys 通过一个列表生成一个dict
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = dict.fromkeys([1,2,3],'sorry') 2 print (a) # {1: 'sorry', 2: 'sorry', 3: 'sorry'} 3 4 b = dict.fromkeys([4,5,6,],[1,{'qq':'马'},9]) 5 print (b) #{4: [1, {'qq': '马'}, 9], 5: [1, {'qq': '马'}, 9], 6: [1, {'qq': '马'}, 9]} 6 # 全部改变 7 b[5][1]['qq'] = 'wx' 8 print(b) #{4: [1, {'qq': 'wx'}, 9], 5: [1, {'qq': 'wx'}, 9], 6: [1, {'qq': 'wx'}, 9]} 9 10 # 类似于浅copy
循环字典:(两种方法)
for i in dict:
print(i,dict[i])
for k,v in dict.items():
print(k,v) # 缺陷,先转换为列表,如果数据量大,耗费太多时间