Python 基础 -- 字典
- Python 中将相关信息关联起来的称为字典;
- 如果你学过 Java,那就可以当作
map
集合; - 如果没有任何语言基础,可以将字典理解为一种对应关系;
- 例如,
姓名 : 尼古拉斯·李四
,年龄 : 19
。 - 以上两个都可以当作一个简单的表示人的字典,对字典进行解读:这个人的名字为尼古拉斯·李四,年龄为 19 岁。
1. 一个简单的字典
-
其实,字典和列表以及元组类似,不同的是,列表是方括号
[]
,元组是圆括号()
,而字典是大括号{}
。 -
假设一个简单的打外星人小游戏,其中这些外星人的颜色和得分点各不相同;
-
下面是一个简单的字典,存储了关于外星人的信息:
-
在 Python 中,字典是一系列键-值对;
-
每个键都与一个值相关联,上式例中,包含两个键-值对:
- 键:color ---------- 值:green
- 键:points -------- 值:5
-
所以,当我们用 print 打印时,就可以通过键来访问与之相关联的值;
-
与键相关联的值可以是数字、字符串、列表甚至是字典。
-
键和值之间用冒号分隔;
-
键-值对之间用逗号分隔;
-
一个字典中,理论是可以存许多的键-值对;
2. 使用字典
2.1 访问字典中的值
- 通过字典中的键可以得到与之对应的值;
2.2 添加键-值对
-
字典是一种动态结构,可以随时在其中添加键-值对;
-
添加键-值对,可按照如下格式进行:
字典名[键] = 值
-
下例中,将对上述
alien_0
字典进行键-值对的添加;
-
如上述例子所述,对原先的
alien_0
字典进行键-值对的添加,其中,添加了:- 键:x_position --------- 值:0
- 键:y_position --------- 值:25
-
最终结果显示,
alien_0
字典包含四个键-值对; -
有时候,也可以先定义一个空字典,然后在根据需求添加所需的键-值对。
2.3 修改字典中的值
-
修改字典中的值相对来说就比较简单,就相当于给变量重新赋值;
-
修改格式如下:
字典名[键] = 新值
-
针对上述例子,我们将颜色和得分对应的值都进行修改:
2.4 删除键-值对
-
对于字典中不需要的信息,可以使用
del
删除; -
使用
del
删除键-值对的格式如下:del 字典[键]
-
经过
del
删除的键-值对将被永久删除,不可恢复;
2.5 由相似的对现象组成的字典
-
之前的示例中,字典存储的都是一个对象的多种信息;
-
但是,字典也可以存储众多对象的同一种信息;
3. 遍历字典
- 对字典的遍历有三种方式:
- 遍历字典的所有键-值对;
- 遍历字典的所有键;
- 遍历字典的所有值;
3.1 遍历所有的键-值对
-
遍历字典的所有键-值对需要使用内置函数
items()
; -
items()
函数以列表返回可遍历的(键, 值)元组数组; -
语法为:
字典名.items()
-
使用
items()
遍历字典时,返回的键-值对顺序与存储顺序不同; -
是应为,Python 不在乎键-值对的顺序,只在乎键-值对之间的关联关系;
3.2 遍历所有的键
-
遍历字典的所有键需要使用内置函数
keys()
; -
keys()
函数以列表返回一个字典所有的键; -
语法为:
字典名.keys()
-
遍历字典时,会默认遍历所有的键,因此,
keys()
函数可以省略;
-
可以使用
sorted()
函数来获得按特定顺序排列的键列表:
3.3 遍历所有的值
-
遍历字典的所有的值需要使用内置函数
values()
; -
values()
函数以列表返回一个字典所有的值; -
语法为:
字典名.values()
-
遍历字典时,字典中的值可能会重复,可以使用
set
集合来去除重复项; -
集合类似于列表,但是集合中的元素都必须是独一无二的;
4. 嵌套
- 嵌套:将一系列字典存储在列表中,或者将列表作为值存储在字典中;
4.1 列表中存储字典
-
每一个外星人都有超过一种的信息,每一个外星人的所有信息可以作为一个字典;
-
当外星人成群结队时,可以将每个外星人字典存储到列表中;
4.2 在字典中存储列表
-
列表只能作为值嵌套在字典中;
-
因为字典中键必须不可变,所以键可以用数字、字符串或元组充当,但是不能使用列表;
-
当字典中的某一个键需要多个值时,就可以将列表嵌套在字典中;
4.3 在字典中存储字典
-
可在字典中嵌套字典,但是这会导致代码复杂;
-
例如,有多个用户,每个用户都有的用户名;
-
在字典中,将用户名作为键,将每位用户的信息存储为一个字典;