字典
成对的保存数据,以key:value的形式保存
用{}表示,每一项内容是不能重复的,储存是依靠着key来计算的
字典是使用hash算法计算key的哈希值,使用哈希值来储存数据
哈希算法得到的是一个唯一的数字(可能是正数,可能是负数,很大或者很小)
哈希算法是无序的
字典中的key必须是可哈希的,不可变的就是可哈希的
不可变:字符串 元组 int bool
可变的: list dict set
dic = {[]:"abc",}
print(dic) # key不能重复, key必须是可哈希的(不可变) unhashable type: 'list' 列表可变,不可哈希
字典的增删改查
增
dic = {}
dic['王者荣耀'] = '荣耀王者'
dic['A'] = '123'
dic['A'] = '456'
print(dic) #key如果重复就会被修改
setdefault 先判断key是否存在,如果存在不进行新增,不存在执行新增
dic.setdefault('宫本武藏','很牛b')
dic.setdefault('宫本武藏','超级兵')#如果可以存在就不会再添加了
dic.setdefault({'李白','坑'})#错误的
dic[key] = value
setdefault(key,value)
删
dic = {'A':'123','B':'456','C':'789'}
dic.pop('A')
dic.popitem()#删除最后一个,实际上是随机删除的
#dic.clear()#清空字典
del dic['B']
print(dic)
pop(key)
popitem()
del dic[key]
clar()
修改
dic = {"张无忌":'倚天屠龙记', "紫薇":"还珠格格", "王语嫣":"天龙八部", "刘能":"乡村爱情协奏曲"} dic['王语嫣'] = "天龙九部" # dic[已经存在的key] = 新value print(dic) dic2 = {"张无忌": "魔教教主", "紫薇":"还珠格格第二部", "马大帅":"彪哥"} dic.update(dic2)# 把dic2中的内容覆盖到dic中 print(dic) dic[key] = value dic1 = update(dict2)
查询
dic = {'A':'123','B':'456','C':'789'}
print(dic[D])#没有报错
print(dic.get('D'))#返回None
setdefault() #新增
dic = {"jay":"周杰伦"}
ret = dic.setdefault("jay_jj","林俊杰")
print(dic, ret)
dic[key]
dic.get(key)
dic.setdefaul()
常见操作
dic.keys() #key的集合
dic.values() #value的集合
items()#键值对的集合(key,value)
for k,v in dic.items():
k,v
字典的迭代
for k in dic:
print(k,dic[k])
字典的嵌套
wf = {
"name":"汪风",
"age":42,
"hobby":"抢头条",
"代表作":["春天里","怒放的生命","北京 北京"],
"wife_now":{
'name':"长子怡",
"age":62,
"爱好":"打麻将"
},
"children": [{'id':1,"name":"汪汗"},{"id":2,"name":"汪才"}]
}
print(wf['wife_now']['爱好'])
# 汪峰的小儿子改名成 汪晓峰
wf['children'][1]['name'] = "汪晓峰"
print(wf)