python中的字典及其操作
字典
dic = {'name':'alex','age':9000} #字符串 dic = {1:'a',2:'b',3:'c'} #数字 dic = {True:'1',False:'0'} #布尔值 dic = {(1,2,3):'abc'} #元组 dic = {[1,2,3]:'abc'}
dict 用{}来表示 里面是键值对数据 {key:value} , 它具有唯一性
key (键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键)
value (值 没有任何限制)
增删改查
增
dic = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'} dic['诺克萨斯'] = '人头狗' # 新增 print(dic) >>> {'火女': '安妮', '火男': '布兰德', '维恩': '暗影猎手', '剑豪': '哈莎阁', '诺克萨斯': '人头狗'} dic.setdefault('火女','安妮') # 如果在字典中存在就不进行任何操作,不存在就进行添加 dic.setdefault('火女','提伯爵') >>> {'火女': '提伯爵', '火男': '布兰德', '维恩': '暗影猎手', '剑豪': '哈莎阁', '诺克萨斯': '人头狗'} dic[key] = value dic.setdefault(key,value) 如果键在字典中存在不进行任何操作,否则就添加,可以通过key查询,没有这个key返回None
删
pop(key) 有返回值 返回的值是被删除的value
del dic[key]
popitem() 随机删除,默认删除最后一个键值对,返回值是一个元组 (key,value)
clear() 清空字典
dic = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'} dic.popitem() #随机删除 默认删除最后一个, 返回值是一个元组 (key,value) print(dic) >>> {'火女': '安妮', '火男': '布兰德', '维恩': '暗影猎手'} del dic['火女'] >>> {'火男': '布兰德', '维恩': '暗影猎手'} #删除 "火女:安妮" dic.clear() >>> {} #清空
改
dic[key] = 内容 # 修改的是key对应的value
dic.update(字典) # 个人理解为更新,将新旧两个字典合并到一起,如果相同,新的会覆盖旧的
dic = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'} dic['剑豪'] = '哈撒尅'# 强制修改 print(dic) >>> {'火女': '安妮', '火男': '布兰德', '维恩': '暗影猎手', '剑豪': '哈撒尅'} dic = {'火女':'安妮','盖伦':'大宝剑','维恩':'暗影猎手','剑豪':'疾风剑豪'} dic1 = {'盖伦':'草丛伦','剑豪':'托儿所','烬':'红领巾'} dic.update(dic1) print(dic) >>> {'火女': '安妮', '盖伦': '草丛伦', '维恩': '暗影猎手', '剑豪': '托儿所', '烬': '红领巾'}
查
get(key)
dic[key]
for 循环
setdefault(key)
for 循环 #元组 键 值 键值对 for i in dic: print(i) #for 循环默认是获取字典中的键 print(dic['key']) #查看1 没有这个键的时候查询会报错 print(dic.get('一个不存在的key','你傻啊,没有!')) >>> "你傻啊,没有!" #查看2 没有则返回None 当没有的时候可以指定返回内容,这个会返回 "你傻啊,没有" print(dic.setdefault('易大师范湖')) >>> None #查看3 没有返回None
字典的其他操作(字典中独特的):
keys 获取到所有的键存在一个高仿的列表中
values 获取到所有的值存在一个高仿的列表中
items 获取到所有的键值对已元祖的形式存在一个高仿的列表中
keys values items dic = {'火女':'安妮','盖伦':'大宝剑','维恩':'暗影猎手','剑豪':'疾风剑豪'} print(dic.keys()) >>> dict_keys(['火女', '盖伦', '维恩', '剑豪']) # (高仿列表) 列表的操作都可以在其上面 print(dic.values()) >>> dict_values(['安妮', '大宝剑', '暗影猎手', '疾风剑豪']) # (高仿列表) 列表的操作都可以在其上面 print(dic.items()) >>> dict_items([('火女', '安妮'), ('盖伦', '大宝剑'), ('维恩', '暗影猎手'), ('剑豪', '疾风剑豪')]) for i in dic.keys(): print(i) >>> 火女 盖伦 维恩 剑豪 for i in dic: print(i) >>火女 盖伦 维恩 剑豪> #获取到字典中的每一个键 for i in dic.values(): print(i) >>> 安妮 大宝剑 暗影猎手 疾风剑豪 #获取到字典中的每一个值 for i in dic.items(): print(i) >>> ('火女', '安妮') ('盖伦', '大宝剑') ('维恩', '暗影猎手') ('剑豪', '疾风剑豪') #获取到字典中的键值对,以元组的形式输出
解构(解包):
a,b = 1, 2
a,b = (1,2)
a,b = [1,2]
a,b = '12' #将后边解构打开按位置赋值给变量 支持 字符串 列表 元组 print(a) >>> 1 print(b) >>> 2 dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} for a,b in dic.items(): print(a) # 易大师 剑豪 草丛轮 print(b) # 剑圣 托儿所 大宝剑 >>> 易大师 剑圣 剑豪 托儿所 草丛伦 大宝剑 dic1 = {} dics = dic1.fromkeys([1,2,3],'abc) >>> {1: 'abc', 2: 'abc', 3: 'abc'}
字典的嵌套:
与列表的嵌套操作是相同的
dic = { 'name':'汪峰', 'age':43, 'wife':{ 'name':'国际章', 'age':39, 'salary':100000 }, 'baby':[ {'name':'熊大','age':18}, {'name':'熊二','age':15}, ] } dic['baby'][0]['age'] = 19 # 修改熊大的年龄为19 print(dic) >>> {'name': '汪峰', 'age': 43, 'wife': {'name': '国际章', 'age': 39, 'salary': 100000}, 'baby': [{'name': '熊大', 'age': 19}, {'name': '熊二', 'age': 15}]}