dict 字典
{}表示,每次保存两个数据,key:value,键值对
根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为哈希算法(hush),而hash表是不连续的,因此不能切片,也决定了按照内部的哈希表保存的key-value值是无序的
在dict中存储的key-value中的key都是可哈希的,即不可变的数据类型:
int,str,tuple,bool
通过前边的参数去找后边的类型,后边可以存储任何的数据类型
语法:
dict = {key1:value1,key2:value2,...}
dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}}
print(dic)
print(dic)
print(dic[3])
print(dic[Ture])
print(dic['linga'])
print(dic[(1,2)])
#使用bool时要注意Ture对应的值为1
1、新增:
语法:
dict[key] = value dict.set
dict.setdefault(key,value)
如果dict中没有出现过这个key-value。可以通过setdefault设置默认,如果dict中已经存在了。那么setdefault将不会起作用
如果key存在,执行的是修改操作,反之执行的是新增
dic = {}
dic['jay'] = '周杰伦'
dic[1] = '马纳多纳'
print(dic)
dic.setdefault('LOL')
print(dic)
dic.setdefault('LOL','Master')
print(dic)
2、删除
pop,del,clear,popitem
用法和列表的一样
需要注意的是popitem是随机删除
语法:
dict.pop(key)
dict.clear(key)
del dict(key)
dict.popitem()
dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}}
dic.pop(3)
dic.pop()
dic.popitem()
print(dic)
del dic('allen')
print(dic)
dic.clear()
print(dic)
3、修改
和列表一样
dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1)
# 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
print(dic)
print(dic1)
4、查询
查询一般用key来查找具体的数据
语法:
dict[key]
dict.get(key)
使用dict[key]需注意如果key不存在会报错,而使用dict.get(key),key不存在是会返回None
dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}}
print(dic[3])
print(dic.get(Ture))
print(dic.get(111))
print(dic[121])
5、其他相关操作
1 for循环:
语法:
for key in dict.keys():
for value in dict.values():
for key,value in dict.items()
需注意的是,keys(),values(),items()相当于字典中key,value,和key:value的列表。
for key,value in dict.items()中: key,value使用了解构,使用结构要注意结构的元素和承接的变量个数要匹配
dic = {1:'马拉多纳',2:'外星人',3:'小罗',4:'内马尔'}
for key in dic.keys():
ptint(key)
for value in dic.values():
print(value)
for key,value in dic.items():
print(key,value)
li = [2,3,4,5]
a,b,c,d = li
print(a,b,c,d)
6、字典的嵌套
有降维的意思,便于识读和操作
用法跟列表的一样
wangfeng = {
'name':'汪峰',
'age':46,
'wife':{
'name':'章子怡',
'age':43
},
'children':[
{'name':'小叮当','age':10},
{'name':'大叮当','age':16}
]
}
#汪峰的第二个儿子的年龄
print(wangfeng.get("children")[1].get("age"))
print(wangfeng.get("wife").get("name"))
print(wangfeng.get("name"))
#我不是有意调戏峰哥的
dic = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
# 1,将name对应的列表追加一个元素’wusir’。
dic['name'].append("wusir")
print(dic)
# 2,将name对应的列表中的alex首字母大写。
dic['name'][0] = dic['name'][0].capitalize()
print(dic)
# 3,oldboy对应的字典加一个键值对’老男孩’,’linux’。
dic['oldboy']['老男孩'] = 'linux'
print(dic)
# 4,将oldboy对应的字典中的alex对应的列表中的python2删除。
dic["oldboy"]['alex'].remove('python2')
print(dic)