PythonDay05
程序员文章站
2024-02-09 19:21:16
第五章 今日内容 字典 字典 字典 语法:{'key1':1,'key2':2} 注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据 列表可以存储大量的数据类型,但是只 ......
第五章
今日内容
-
字典
字典
语法:{'key1':1,'key2':2}
注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据
在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中.
这种算法被称为hash算法,key必须是可hash的
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set
注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据
注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据
dict = {1:1,2:2,3:'3',4:'5'}
print(dict[1]) # 1
print(dict[4]) # '5'
注意:dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表 不是连续的. 所以不能进⾏切片⼯作. 它只能通过key来获取dict中的数据
1.字典的增
dic = {}
dic['name'] = '徐'
dic['age'] = 19
print(dic) # {'name': '徐', 'age': 19}
# 如果dict中没有出现这个key,就会将key-value组合添加到这个字典中
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
dic.setdefault('雨隹',1)
print(dic) # {'雨隹': 1}
# 我们使用setdefault这个方法 里边放的这个内容是我们字典的健,后面写默认值,可不写,默认为none
dic.setdefault('雨隹',123)
# 这样就是不会进行添加操作了,因为dic这个字典中已经存在
# 总结: 当setdefault中第一个参数存在这个字典中就就不进行添加操作,否则就添加
2.字典的删
dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
s = dic.pop('剑圣') # pop删除有返回值,返回的是被删的值
print(dic) # 打印删除后的字典
dic.popitem() # 随机删除 python3.6是删除最后一个
print(dic)
dic.clear() # 清空
3.字典的改
dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
dic['大宝剑'] = '德玛西亚'
print(dic)
dic.update({'key':'v','哈啥给':'剑姬'})
# 当update中的字典里没有dic中键值对就添加到dic字典中,如果有就修改里边的对应的值,必须是字典
4.字典的查
dic = {'剑圣':'易','哈啥给':'剑豪','大宝剑':'盖伦'}
s = dic['大宝剑'] #通过健来查看,如果这个健不在这个字典中.就会报错
s1 = dic.get('剑圣') #通过健来查看,如果这个健不在这个字典中.就会返回none
s2 = dic.get('剑姬','可定义返回的结果') # 我们可以在get查找的时候自己定义返回的结果
5.字典的其他操作
keys() 获取所有的键
values() 获取所有的值
items() 获取所有的键值
for循环 -- 循环的是字典的键
for k,v in dic.items():
print('这是键',k)
print('这是值',v)
# 循环字典获取键和值
练习
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
请在k3对应的值中追加一个元素 44,输出修改后的字典
请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
6.结构
a,b = 1,2 print(a,b) # 1 2 a,b = ('你好','世界') print(a,b) # 你好,世界 a,b = {'汪峰':'北京北京','王菲':'天后'} print(a,b) 结果: 汪峰 王菲
解构可以将内容分别赋值到变量当中,我们使用解构就能够快速的将值使用
7.字典的嵌套
dic = { 101:{1:{"日魔":"对象"}, 2:{"隔壁老王":"王炸"}, 3:{"乔碧萝":("日魔","炮手","宝元")}, }, 102:{1:{"汪峰":{"国际章":["小苹果","大鸭梨"]}}, 2:{"邓紫棋":["泡沫","信仰","天堂","光年之外"]}, 3:{"腾格尔":["隐形的翅膀","卡路里","日不落"]} }, 103:{1:{"蔡徐坤":{"唱":["鸡你太美"], "跳":["钢管舞"], "rap":["大碗面"], "篮球":("nba形象大使")}}, 2:{"jj":{"行走的cd":["江南","曹操","背对背拥抱","小酒窝","不潮不花钱"]}}, 3:{"jay":{"周董":["菊花台","双节棍","霍元甲"]}}}, 201:{ 1:{"韦小宝":{"双儿":"刺客","建宁":{"公主":{"吴三桂":"熊"}},"龙儿":{"教主老婆":"教主"}}} } } print(dic[201][1]["韦小宝"]["建宁"]["公主"]["吴三桂"]) # print(dic[103][1]["蔡徐坤"]["跳"][0][1]) # print(dic[102][2]["邓紫棋"][1])
练习
dic1 = { 'name':['alex',2,3,5], 'job':'teacher', 'oldboy':{'alex':['python1','python2',100]} } 1,将name对应的列表追加⼀个元素’wusir’。 2,将name对应的列表中的alex⾸字⺟⼤写。 3,oldboy对应的字典加⼀个键值对’⽼男孩’,’linux’。 4,将oldboy对应的字典中的alex对应的列表中的python2删除
推荐阅读