day5 ~
在python中字典的使用方法与list有一定的共性,但是比较方便的下标(索引)方式在字典中无法使用,因为字典是无序的组合,在字典中的数据都是无序排列,利用下标无法获取元素,并且在3.5之前的版本中尤为明显,而在3.6之后官方更行后,排序有了一定的优化,但也没有明确表示字典会是有序的。
哈希的概念:在字典中有一种哈希表对应所有的键,只有键是不可变的类型才可以哈希,而可变的类型不可哈希
哈希表是用来在字典中利用二分法判断键的位置的时候将键先去
只有是不可变类型的数值才能哈希
不可变的类型有:str tuple int bool (可哈希)
可变的类型有:list dict (不可哈希)
字典的键必须是不可变数据类型,可哈希
字典的键值对可以是任何类型。
1 dic = {'ss':22,'dd':33,'gg':44,'jj':66,'kk':88} 2 print(dic) 3 4 #结果: 5 每次输出都是不一样的,没有顺序,所以无法使用索引
#dict的增删改查!
#增,在字典中有两种方法,一种是利用dic[' ']直接赋值,还有一种是利用dic.setdefault()直接添加:
1.setdfault方法:
dic = {'ss':22,'dd':33,'gg':44,'jj':66,'kk':88} dic.setdefault('sa','hha') print(dic)#结果:{'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33}
#在原有字典内部,添加之前判断添加的元素在字典中是否用有,无则添加,有则不变
dic.setdefault('sa','hha')
print(dic)#结果:{'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33}
2.直接添加:
dic={'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33} dic['kk'] = 'aa' print(dic)#结果:{'dd': 33, 'gg': 44, 'jj': 66, 'sa': 'hha', 'kk': 'aa', 'ss': 22} #直接添加
##在原有字典内部,添加之前判断添加的元素在字典中是否拥有,无则添加,有则覆盖
dic['kk'] = 'aaaaa'
print(dic)#结果:{'dd': 33, 'gg': 44, 'jj': 66, 'sa': 'hha', 'kk': 'aaaaa', 'ss': 22}
#删
1.在字典中删除方法有三种,1.pop删除方法,2.clear删除方法,3.del删除方法 4.popitem方法
1.pop方法:利用key来删除,没有默认删除,无则报错。
1 dic={'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33} 2 dic.pop('ss') 3 print(dic)结果:{'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}
dic.pop()
print(dic)结果:报错!!
#没有默认删除,因为字典是无序的。
dic.pop('meinv', '错了')#当不设定错误信息时,没有找到key就会报错,只有设定报错信息才会在报错的时候显示信息
print(dic)
2.clear方法:直接清空字典
1 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 2 dic.clear() 3 print(dic)#结果:{}
3,。del方法:删除或者利用键删除,没有找到key时就会报错
1 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 2 del dic['jj'] 3 print(dic)#结果{'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 4 del dic['eeee'] 5 print(dic)#结果报错
4.popitem方法,随机删除一个数字
#popitem方法 随机删除 # # dic.popitem() # print(dic)
#改:
改的方法有直接修改和update修改。
1 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 2 dic['jj'] = 888 3 print(dic)结果:{'jj': 888, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 4 ########################## 5 6 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 7 dic1={'kk':99} 8 dic.update(dic1)#dic1当有相同key时直接覆盖添加,没有相同就直接添加入dic 9 print(dic)
#查:
在python中get方法以及key查询:
1 #get查询 2 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'} 3 dic.get('jj') 4 dic.get('dds','没有找到')#当没有查找到的时候将会报错。 5 print(dic)
其他方法: keys,valuse,ltems方法
1 # 2 dic.keys() 字典中的所有key的值 3 dic.valuse()字典中所有键值对 4 dic.items()将字典所的key和键值对都编成元祖的模式输出 5 都可以转换为list并用for循环转换出来。
#关于分别赋值:
1 # a,b =2,3 2 # a,b=b,a #分别赋值 3 4 # a = 2 5 # b = 3 6 # c = a 7 # a = b 8 # b = c 9 # print(a,b) 10 11 #在dic.item()用分别赋值的方法将所有的元祖取出来。 12 for a,b in dic.items(): 13 print(a,b)