python dict字典

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)


 
原文地址:https://www.cnblogs.com/wpcbk/p/8625521.html