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.列表的存储是有序的,字典的存储是无序的
(有序是指“先来后到”,先来的在前)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值