字典是一种映射,这种数据结构通过名称来访问其各个值。
特点:1、字典是Python中唯一的内置映射类型
2、字典的值不按顺序排列
3、值存储在键下
4、键可能是数、字符串或元祖
5、在字典中,键必须是独一无二的,而字典中的值无需如此
1、字典的用途
字典旨在让人能够轻松地找到特定的单词(键),以获悉其定义(值)。
2、创建和使用字典
字典由键及其相应的值组成,这种键-值对称为项。
每个键与其值之间都用冒号( : )分隔,项之间用逗号分隔,整个字典放在花括号{}内。
空字典用两个花括号表示,{}。
2.1 函数dict
可使用函数dict从其它映射或键-值对序列创建字典。
![](https://i-blog.csdnimg.cn/blog_migrate/d821d14adedbcfce11a1f380fb6ef089.png)
用关键字实参来调用这个函数
![](https://i-blog.csdnimg.cn/blog_migrate/39bd27af29c75add1ba576d11f24dcc8.png)
2.2 基本的字典操作
1、len(d)返回字典d包含的项(键-值对)数
2、d[key] 返回与键key相关联的值
3、d[key] = value 将值value关联到键key
4、del d[k] 删除键为k的项
5、k in d 检查字典d是否包含键为k的项
6、字典和列表的区别:
(1)键的类型,字典中的键可以是任何不可变的类型,如浮点数(实数)、字符串或元组。
(2)自动添加,即便字典中原本没有的键,也可以给它赋值,这会创建一个新项。列表需要使用类似append方法,才能给元素赋值
(3)成员资格,表达式 k in d 查找的是键而不是值,表达式v in l 查找的是值而不是索引
2.3 遍历字典
2.3.1遍历所有的键值对
![](https://i-blog.csdnimg.cn/blog_migrate/521cd28632648f3d4c662e8d49db2b05.png)
2.3.3 遍历字典中的所有键
![](https://i-blog.csdnimg.cn/blog_migrate/c56d7a6477189633d81e9730f990297a.png)
遍历字典时,会默认遍历键,为了代码可读性,通常使用keys()方法
方法keys(),返回一个列表,其中包含字典中的所有键。
2.3.3 按顺序遍历字典中的所有键
使用sorted()对字典返回的键进行排序。
![](https://i-blog.csdnimg.cn/blog_migrate/cd2b0b4ee3e913898bb417f3233e773f.png)
2.3.4 遍历字典中的所有值
![](https://i-blog.csdnimg.cn/blog_migrate/1d75c281ca99355e84bfcc9289f918c5.png)
方法values(),返回一个值列表。
2.3.5 集合
剔除重复项,可使用集合set。
集合类似与列表,但是用花括号括起来,且其中每个元素都是独一无二的。
![](https://i-blog.csdnimg.cn/blog_migrate/b551ed7c928419e5bbac7d5a65585c3f.png)
2.4 将字符串格式设置功能用于字典
必须使用format_map来指出你将通过一个映射来提供所需的信息。
![](https://i-blog.csdnimg.cn/blog_migrate/e99540cdcc5f04935b2fdbc305bc3184.png)
2.5 字典方法
1、clear
方法clear删除所有的字典项,此操作就地执行,返回None
![](https://i-blog.csdnimg.cn/blog_migrate/c900860d01bff02bd450a4fa9c732ab9.png)
2、copy
copy属于浅复制,返回一个新字典,其包含的键-值对与原来的字典相同。当替换副本中的值时,原件不受影响;修改副本中的值(就地修改而不是替换),原件也将发生变化。
![](https://i-blog.csdnimg.cn/blog_migrate/bbe4260399a739f1fc200fadfafed4ba.png)
deepcopy()执行深复制,即同时复制值及其包含的所有值。
3、fromkeys
方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都默认是None
![](https://i-blog.csdnimg.cn/blog_migrate/ca76e7336a28bb7472852b5a6609b619.png)
4、get
使用get访问字典项中不存在的键时,不会引发异常,而是返回None
![](https://i-blog.csdnimg.cn/blog_migrate/770d5743efb7100412094e9eb2db20c6.png)
5、items
方法items返回一个包含所有字典项的列表,其中每个元素都为(key,value)的形式。
![](https://i-blog.csdnimg.cn/blog_migrate/782299f5e91c96653f448f0b83de0924.png)
返回值属于字典视图的特殊类型,其可以用于迭代,可确定其长度和成员资格检查,它始终是底层字典的反应。
6、keys
方法keys返回一个字典视图,其中包含指定字典中的键
7、pop
方法pop可用于获取与指定键相关联的值,并将该键-值对从字典中删除。
8、popitem
方法popitem类似与list.pop,但是popitem随机的弹出一个字典项,并以元组的方式返回,因为字典项的顺序不确定。
9、setdefault
setdefault方法获取指定键相关联的值,当字典在不包含指定键时,自动添加指定的键-值对。
![](https://i-blog.csdnimg.cn/blog_migrate/1d60c62db3958f06b95d49c069300c28.png)
10、update
方法update使用一个字典中的项来更新另一个字典
![](https://i-blog.csdnimg.cn/blog_migrate/ecfdbeeb9ea3768d30cdba306f0c7b02.png)
通过参数提供的字典,将其项添加到当前字典中,如果当前字典包含键相同的项,就替换它
11、values
方法values返回一个由字典中的值组成的字典视图。