python基础梳理(七)映射关系型的容器字典dict

一、基本概念
字典:
其实就是哈希表(hashtable),每一个数据都和唯一的一个键值绑定在一起,产生映射关系。

作用:很多情况下事物之间存在映射关系,如星期与起个数字的对应关系。
再比如,有时我们需要哈希表这种数据结构,来开发一些高效率的软件。

dict的构造函数:
d=dict() #构造一个空的字典
d=dict(可迭代对象) #构造一个空的字典
d=dict(命名关键字传参) #构造一个空的字典
在这里插入图片描述

二、字典键值的使用:
1.修改一个存在的键值对应的数据
2.修改一个不存在的键值,会自动创建并赋值
在这里插入图片描述

三、遇到的小问题
在这里插入图片描述
从这里我们发现了俩个问题:
1.打印出来的顺序和我们刚刚创建字典的顺序是相反的,这就要说到字典的底层数据结构—哈希表以及它的散列函数的设定。这里不细说,有兴趣的可以去了解了解哈希,哈希在文件存储,数字加密中都有广泛的应用。
2.创建字典时,key值不加引号,但是在访问时,一定要加引号。python中,字典的key值作为函数参数时不需要加引号,即在dict()函数中作为参数时。

四、删除索引del 以及 in/not in运算符
在这里插入图片描述
in运算的可以判断一个键值是否在字典中,而不是值,如果存在返回True。

列表的in和字典的in的区别:
1.列表的in是遍历列表中的所有数据,一一比对,对于数据量较大的列表,会很慢
2.字典的in是通过哈希的散列函数来对比,然后再去“桶下面的列表去寻找”,对于数据量较多的哈希速度明显较快

五、字典的迭代访问:
对于字典的迭代有点特殊,他只能对建进行迭代访问。
示例:
在这里插入图片描述

六、常见的内建函数以及常用方法:
1.内建函数
len(d):返回字典中键值对的个数
max(d):返回字典中键值对中最大的键值
min(d):返回字典中键值对中最小的键值
sum(d):返回字典中所有键值之和
any(d):对所有键值进行真值测试,只要有一个是真的,那么就返回True,则False
all(d):对所有键值进行真值测试,如果所有键值是真的,那么就返回True,则False

2.常用方法 help(dict)
D.clear():用来清空字典中的数据
D.pop(key) :弹出(移出)对于对应的键值key,并且返回所对应的value(删除后底层会重新进行哈希)
D.copy():返回字典的副本或者叫引用,是浅拷贝,底层的数据不会真正的赋值
D.update(D2):讲字典D2合并到字典D中,如果键值重复,那么就用D2中的数据去覆盖掉(更新)D中原来value
在这里插入图片描述
D.get(key,default):返回键key所对应的值,如果该键值不存在,则返回None,不过可以通过参数default来修改
在这里插入图片描述
D.keys():返回可迭代对象dict_keys集合组成的对象(由D的键值组成的可迭代对象)
在这里插入图片描述
D.values():返回可迭代对象dict_values集合组成的对象(由D的values组成的可迭代对象)
在这里插入图片描述
D.items():返回可迭代对象dict_items集合组成的对象(由D的每个key-value组成的可迭代对象)
在这里插入图片描述

七、字典的推导式
用可迭代对象依次生成一个字典

语法:
{键值表达式:值表达式 for 变量 in 可迭代对象 [if 真值表达式 ]}
注:[]中的内容可以省略,视情况而定,比如要对一些数据进行筛选。

示例:将列表L= [“hello”,‘A’,‘python’] 生成以下的字典
d ={“hello”:5,“A”:1,“python”:6}
推导式: [x : len(x) for x in L]

在这里插入图片描述
对于字典推导式的嵌套和list一致,参考list即可。

八、列表和字典
1.都是可变对象
2.索引方式不同,列表的索引用的是整数,字典用键值索引
3.字典的查找速度可能会比列表的快
4.列表的存储是有序的,字典的存储是无序的
(有序是指“先来后到”,先来的在前)

猜你喜欢

转载自blog.csdn.net/KingOfMyHeart/article/details/88778263