Day 5 字典以及字典的用法

it2022-05-05  199

拓展 li = ['alex','wusir','taibai'] print('_'.join(li)) 拼接的符号''.join(可迭代对象)

字典--dict 字典:用于存贮数据,存贮大量数据 优点:速度快(快于列表) 能将数据之间关联起来

定义一个字典 dict = {'1':10,'2':20,'张与':40} 字典中逗号分割开的叫做一个元素'1'(键):10(值) 键值对 字典的键: 可哈希的---不可变的数据类型--避免哈希冲突,使用了开放群值法 不可哈希---可变的数据来兴 要求唯一--如果有重复的后边的值前面的值覆盖 字典的值: 可以任意

合法 dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帅哥', '美⼥'], (1, 2, 3): '麻花藤'} print(dic[123]) print(dic[True]) print(dic['id']) print(dic['stu']) print(dic[(1, 2, 3)]) 不合法 dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key

注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

增 dic = {'张与':[1,2,3]} dic['李文虎'] = 89 print(dic)#直接添加,暴力添加

dic = {'张与':[1,2,3]} dic.setdefault('李文虎','89') print(dic)

dic = {'张与':[1,2,3],'李文虎':'89'} dic.setdefault('李文虎','100') print(dic) # 李文虎这个键去字典查询,如果不存在执行添加,如果存在就不添加。

dic = {'张与':[1,2,3],'李文虎':'89'} print(dic.setdefault('王菲')) print(dic) 89 存在 None 不存在 执行添加

删除 dic = {'张与':[1,2,3],'李文虎':'89'} del dic['张与'] print(dic)#通过字典的键删除键值对

dic = {'张与':[1,2,3],'李文虎':'89'} print(dic.pop('张与')) print(dic)#通过字典的键删除键值对,有返回值-被删除的值

dic = {'张与':[1,2,3],'李文虎':'89'} dic.clear() print(dic)

改 dic = {'张与':[1,2,3],'李文虎':'89'} dic['张与'] ='asd' print(dic)#字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改 有则改,无则加 例: dic = {'张与':[1,2,3],'李文虎':'89'} dic.update({'1':3,'5':4,'李文虎':100}) print(dic)

dic = {'张与':[1,2,3],'李文虎':'89'} dic1 = {'1':3,'5':4,'李文虎':100} dic1.update(dic) print(dic1)#update()的字典级别高于update前面的字典

查 dic = {'1':3,'5':4,'李文虎':100} for i in dic: print(i)#获取的是每个键值对的键

dic = {'1':3,'5':4,'李文虎':100} print(dic.get('李文虎'))

dic = {'1':3,'5':4,'李文虎':100} print(dic.get('王菲')) 通过键获取值,如果不在字典中返回NONE

dic = {'1':3,'5':4,'李文虎':100} print(dic['李文虎'])

dic = {'1':3,'5':4,'李文虎':100} print(dic['王菲']) 通过键获取值,如果不在字典中报错

其它操作

dic = {'1':3,'5':4,'李文虎':100} for i in dic: print(i,dic.get(i))

高仿列表 dic = {'1':3,'5':4,'李文虎':100} print(dic.keys()) 高仿列表---dict_keys(['1', '5', '李文虎']) 可实现功能 for循环(可实现) dic = {'1':3,'5':4,'李文虎':100} for i in dic.keys(): print(i)

索引查询(不可实现) dic = {'1':3,'5':4,'李文虎':100} print(dic.keys[0])

迭代添加新列表(可实现) lst = [] dic = {'1':3,'5':4,'李文虎':100} for i in dic: lst.append(dic[i]) print(lst)

获取字典中所有的值(可实现) dic = {'1':3,'5':4,'李文虎':100} print(dic.values())

获取字典中所有的键值对(可实现) dic = {'1':3,'5':4,'李文虎':100} print(dic.items())

for循环获取字典中所有的键值对(可实现) dic = {'1':3,'5':4,'李文虎':100} for i in dic.items(): print(i[0],i[1])

解构 a = 10 b = 20 a,b = b,a print(a,b)

a,b = 1,2 print(a) print(b)

a,b = [1,2] print(a) print(b)

a,b = (3,4,5) print(a,b)#报错,没有一一对应

a,_,b = (3,4,5) print(a,b)#等号后边的值和前面的变量名一一对应

a = 10,12 #本质是一个元组 print(a)

a,b = '23' print(a,b)

a,b = {'1':'a','2':'b'} print(a,b)

dic = {'1':3,'5':4,'李文虎':100} for k,v in dic.items(): print(k,v)

字典的嵌套 dic = {1001:['a','b'] 1002:{'c':{'前期1':['大烧饼’],'前妻2':['熊大','熊二'],'国际章':'rose'}}, 1003:{'陈冠希':['啊娇','啊撒','张柏芝']}, 1004:{'韦小宝':[{'教主夫人':{'教主'}},{'阿珂':'刺客'},{'双儿':'天地会'},{爱新觉罗建宁:公主}]} } print(dic[1004]['韦小宝'][0]['教主夫人'][0])

总结 字典--dict 无序,可变的 键:使用不可变数据类型(可哈希),键是唯一的 值:可以任意

增 dic['键']='值' dic.setdefault('键','值')#存在不添加

删除 del dic['键'] dic.pop['键'] dic.clear()

改 dic['键']='值' dic.update('要更新的字典')

查 for循环查询的是字典的键 get('键')#存在返回字典中键对应的值,不存在返回NONE dic['键']#存在返回字典中键对应的值,不存在报错

其它操作 keys---获取字典中所有的键,存放在一个高仿列表中 values--获取字典中的所有值,存放在一个高仿的列表中 items--获取字典中所有键和值 存放在一个高仿的列表中(元组第一个为键,第二个为值)

解构

a = 10 b = 20 a,b = b,a

字典的嵌套 查找的时候一层一层通过键进行查找键

转载于:https://www.cnblogs.com/zhuzhizheng/p/11167070.html


最新回复(0)