目录
一、字典的介绍
在Python中,字典是一系列键值对(key: value)。每个键都与一个值关联,值的内容可以是数值、字符串、列表乃至字典。字典可以存储一个对象的多种信息,比如单个学生的学籍相关内容;也可以存储多个对象的同一类信息,比如数学老师手中的成绩单。
Python字典用放在大括号{ }中的一系列键值对表示,键和值之间用冒号分隔,而键值对之间用逗号分隔。键值对的数量是任意的。dict = {'key1': 'value1', 'key2': 'value2', ……}
二、字典的基本操作
假设我们有一个存储学生信息的字典:
1、访问字典中的值
1.1、通过键获取对应的值
通过dict['key']的形式来获取对应的value,如图:
需要注意:
1、字典的key和value都不能为空,否则无法正常使用。
2、key可以是空串(可能并没有什么实际意义😜 )。
3、key可以重复,但是在根据key获取value的时候,会产生覆盖,只能输出最后一次访问的键值对
4、value可以是None,且可以被正常获取。
用一张图来说明:
1.2、使用get()来访问值
通过1.1中的方式来获取值时,在某些场景下可能会引发问题,比如指定的键不存在,这时会产生错误:
这时,我们可以使用get()方法来避免这种错误。get()方法有两个参数位,第一个用于指定键(即key),这是必不可少的;第二个参数为指定的键不存在时要返回的内容,为可选项。如果指定的键不存在,又没有指定第二个参数的内容 ,Python会返回None。
2、修改字典
字典是一种动态结构,可以随时进行键值对的添加、修改以及值的变更。
2.1、添加键值对
要添加键值对,需要依次指定字典名、用方括号括起来的键和关联的值。
2.2、 删除键值对
对于字典中不需要的信息,可以使用del语句将相应的键值对彻底删除。删除时须指定字典名和键
接着上边成绩字典的例子,我们继续:
2.3、修改字典中的值
要修改字典中的值,依次指定字典名、键,以及关联的新值。
例如,我们发现语文成绩搞错了,需要修正:
三、遍历字典
鉴于字典可能包含大量数据,Python支持对字典进行遍历。可以遍历所有的键值对,也可以仅针对键或值进行遍历。下面我们举例说明:
1、遍历所有键值对
使用for循环对字典进行遍历,可以声明两个变量用于存储键和值。而循环体包含字典名和方法items(),它会返回一个键值对列表。
比如,我们有一个汽车使用情况的字典:
变量可以任意命名(key、value,k、v,或者其他与业务关联的名字都是可以的),而根据业务来定义变量的名称,可以增加代码的可读性,使代码更容易被人理解。比如,上面的代码可以稍微调整一下:
2、遍历字典中的所有键
在不需要使用字典中的值时,方法keys()就派上用场了。
其实,遍历字典时,会默认遍历所有的键,即:可以在代码中省略keys()方法。
从上面的示例可以看出,有没有keys()方法,结果是一样的。但是,显示的使用keys()方法,可以使代码更容易被理解,增加可读性。
另外,我们还可以按照特定的顺序去遍历字典中的所有键。Python3.7版本开始,遍历字典时,返回的元素是按照插入时的顺序排列的。但有时候我们可能想换一种顺序去遍历字典,这时可以使用sorted()方法,在for循环中对返回的键进行排序,获取一个排好序的列表副本:
可以看到,sorted()方法并没有改变字典中元素(键值对)的顺序。
另外,我们还可以判断某个key是否存在于字典中:
3、遍历字典中的值
如果只关心字典中的值,可使用方法values()来返回一个值列表,而不包含任何键。
但是,这种方法会返回字典中所有的值,包括重复的元素。如果想去重,可以使用集合set。集合中的每个元素都是唯一的:
四、字典嵌套
字典嵌套,是指将一系列字典存储在列表中,或者将一些列表作为值存储到字典中,甚至在字典中存放字典。
1、在列表中存储字典
以前边提到的学籍档案为例子:
还可以使用range()方法来批量生成字典:
2、在字典中存储列表
下面的代码,输出了每个国家包含的汽车品牌
3、在字典中存储字典
进一步的,我们可以在字典中存储字典,即将字典作为值存到另一个字典中。
请看示例:
需要注意,字典嵌套时,内层的字典最好拥有相同的结构,这样在处理时更简单更容易操作。否则,循环处理字典内容将是一件很复杂的事。
(完)