字典介绍及其操作
⼀. 字典的简单介绍
字典方法图解:
字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯⼀的. 在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,
语法 : {key1: value1, key2: value2....}
重点 : key 不可变得 value 没有要求
⼆. 字典的增删改查和其他相关操作
1 增加
dic[key] = value
dic.setdefault(key,value) 如果键在字典中存在不进行任何操作,否则就添加
可以通过key查询,没有这个key返回None
1 dic = {'卢锡安':'马可波罗','赵云':'赵信','钟馗':'锤石','貂蝉':'九尾狐','安其拉':'火女'} 2 dic['阿里'] = 'ADC' #新增 3 dic.setdefault('达摩','瞎子') #如果字典中存在则不进行操作,不存在则新增加 4 print(dic) 5 6 7 #结果: 8 '卢锡安': '马可波罗', '赵云': '赵信', '钟馗': '锤石', '貂蝉': '九尾狐', '安其拉': '火女', '阿里': 'ADC', '达摩': '瞎子'}
2 删除
1 dic = {'卢锡安':'马可波罗','赵云':'赵信','钟馗':'锤石','貂蝉':'九尾狐','安其拉':'火女'} 2 ret = dic.pop('安其拉') # #通过key删除 返回被删除的value 3 print(ret) 4 del dic['赵云'] #通过key删除 没有返回值 不填key则直接删除 5 dic.clear() #直接清空字典 6 ret = dic.popitem() #随机删除一个 , 返回值是一个元组 3.6版本以上 默认删除最后一个 7 print(ret) 8 print(dic) 9 10 11 #结果 12 火女 13 {'卢锡安': '马可波罗', '钟馗': '锤石', '貂蝉': '九尾狐', '安其拉': '火女'} 14 {} 15 ('安其拉', '火女') 16 {'卢锡安': '马可波罗', '赵云': '赵信', '钟馗': '锤石', '貂蝉': '九尾狐'}
3 改
dic = {'卢锡安':'马可波罗','赵云':'赵信','钟馗':'锤石','貂蝉':'九尾狐','安其拉':'火女'} dic['安其拉'] = '火男' #直接更改 dis = {'妲己':'垃圾','猴子':'跳跳'} dic.update(dis) #将字典dis 直接添加到字典dic中 print(dic) #结果 {'卢锡安': '马可波罗', '赵云': '赵信', '钟馗': '锤石', '貂蝉': '九尾狐', '安其拉': '火男', '妲己': '垃圾', '猴子': '跳跳'}
4 查
1 dic = {'卢锡安':'马可波罗','赵云':'赵信','钟馗':'锤石','貂蝉':'九尾狐','安其拉':'火女'} 2 for el in dic: # for循环默认是获取字典中的键 3 print(el) 4 5 ret = dic['卢锡安'] # 没有这个键的时候查询会报错 6 rey = dic.get('貂蝉') # 没有返回None 可以指定返回内容 7 print(ret) 8 print(rey) 9 print(dic.setdefault('钟馗')) #没有返回None 10 11 12 #结果 13 卢锡安 14 赵云 15 钟馗 16 貂蝉 17 安其拉 18 马可波罗 19 九尾狐 20 锤石
三 其他操作(字典中独特的)
keys values items
键 值 键值对
1 dic = {'卢锡安':'马可波罗','赵云':'赵信','钟馗':'锤石','貂蝉':'九尾狐','安其拉':'火女'} 2 # keys values items 3 print(dic.keys()) #获取到所有的键存在一个高仿的列表中 4 print(dic.values()) # 获取到所有的值存在一个高仿列表中 5 print(dic.items()) #获取到所有的键值对以元组的形式存在一个高仿列表中 6 7 for i in dic.keys(): #获取所有的键 8 print(i) 9 for i in dic.values(): #获取所有的值 10 print(i) 11 for i in dic.items(): #获取字典中每一个键值对 12 print(i) 13 14 15 #结果 16 dict_keys(['卢锡安', '赵云', '钟馗', '貂蝉', '安其拉']) 17 dict_values(['马可波罗', '赵信', '锤石', '九尾狐', '火女']) 18 dict_items([('卢锡安', '马可波罗'), ('赵云', '赵信'), ('钟馗', '锤石'), ('貂蝉', '九尾狐'), ('安其拉', '火女')]) 19 卢锡安 20 赵云 21 钟馗 22 貂蝉 23 安其拉 24 马可波罗 25 赵信 26 锤石 27 九尾狐 28 火女 29 ('卢锡安', '马可波罗') 30 ('赵云', '赵信') 31 ('钟馗', '锤石') 32 ('貂蝉', '九尾狐') 33 ('安其拉', '火女')
四 解构(解包)
a , b = 1 , 2
print(a)
print(b)
将后边解构打开按位置赋值给变量 支持 字符串 列表 元组
1 dic = {'卢锡安':'马可波罗','赵云':'赵信','钟馗':'锤石','貂蝉':'九尾狐','安其拉':'火女'} 2 for a , b in dic.items(): 3 print(a) 4 print(b) 5 6 7 #结果 8 卢锡安 9 马可波罗 10 赵云 11 赵信 12 钟馗 13 锤石 14 貂蝉 15 九尾狐 16 安其拉 17 火女
fromkeys([1,2,3],'abc')
dis = {} dis1 = dis.fromkeys([1,2,3] , 'asc') print(dis1) #结果 {1: 'asc', 2: 'asc', 3: 'asc'}
嵌套
1 dic = { 2 'name':'汪峰', 3 'age':43, 4 'wife':{ 5 'name':'国际章', 6 'age':39, 7 'salary':100000 8 }, 9 'baby':[ 10 {'name':'熊大','age':18}, 11 {'name':'熊二','age':15}, 12 ] 13 14 } 15 16 dic['baby'][0]['age'] = 19 17 18 print(dic) 19 20 #结果 21 {'name': '汪峰', 'age': 43, 'wife': {'name': '国际章', 'age': 39, 'salary': 100000}, 'baby': [{'name': '熊大', 'age': 19}, {'name': '熊二', 'age': 15}]}