dict--字典

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)
原文地址:https://www.cnblogs.com/linga/p/9140754.html