零代码建站,wordpress自定义二级菜单,php语言入门,装修设计公司网站排名在本章中#xff0c;你将学习能够将相关信息关联起来的Python字典。你将学习如何访问和修改字典中的信息。鉴于字典可存储的信息量几乎不受限制#xff0c;因此我们会演示如何遍 历字典中的数据。另外#xff0c;你还将学习存储字典的列表、存储列表的字典和存储字典的字典。… 在本章中你将学习能够将相关信息关联起来的Python字典。你将学习如何访问和修改字典中的信息。鉴于字典可存储的信息量几乎不受限制因此我们会演示如何遍 历字典中的数据。另外你还将学习存储字典的列表、存储列表的字典和存储字典的字典。 理解字典后你就能够更准确地为各种真实物体建模。你可以创建一个表示人的字典然后想在其中存储多少信息就存储多少信息姓名、年龄、地址、职业以及要 描述的任何方面。你还能够存储任意两种相关的信息如一系列单词及其含义一系列人名及其喜欢的数字以及一系列山脉及其海拔等。 一个简单的字典
来看一个游戏其中包含一些外星人这些外星人的颜色和点数各不相同。下面是一个简单的字典存储了有关特定外星人的信息
alien_0 {color: green, points: 5}
print(alien_0[color])
print(alien_0[points])字典alien_0 存储了外星人的颜色和点数。使用两条print 语句来访问并打印这些信息如下所示
green
5与大多数编程概念一样要熟练使用字典也需要一段时间的练习。使用字典一段时间后你就会明白为何它们能够高效地模拟现实世界中的情形。
使用字典
在Python中字典 是一系列键—值对 。每个键 都与一个值相关联你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上可将 任何Python对象用作字典中的值。 在Python中字典用放在花括号{} 中的一系列键—值对表示如前面的示例所示
alien_0 {color: green, points: 5}键—值 对是两个相关联的值。指定键时Python将返回与之相关联的值。键和值之间用冒号分隔而键—值对之间用逗号分隔。在字典中你想存储多少个键—值对都可以。 最简单的字典只有一个键—值对如下述修改后的字典alien_0 所示
alien_0 {color: green}这个字典只存储了一项有关alien_0 的信息具体地说是这个外星人的颜色。在这个字典中字符串’color’ 是一个键与之相关联的值为’green’ 。
访问字典中的值
要获取与键相关联的值可依次指定字典名和放在方括号内的键如下所示
alien_0 {color: green}
print(alien_0[color])这将返回字典alien_0 中与键’color’ 相关联的值
green字典中可包含任意数量的键—值对。例如下面是最初的字典alien_0 其中包含两个键—值对
alien_0 {color: green, points: 5}现在你可以访问外星人alien_0 的颜色和点数。如果玩家射杀了这个外星人你就可以使用下面的代码来确定玩家应获得多少个点
alien_0 {color: green, points: 5}
❶ new_points alien_0[points]
❷ print(You just earned str(new_points) points!)上述代码首先定义了一个字典然后从这个字典中获取与键’points’ 相关联的值见❶并将这个值存储在变量new_points 中。接下来将这个整数转换为字符串并 打印一条消息指出玩家获得了多少个点见❷
You just earned 5 points!如果你在有外星人被射杀时都运行这段代码就会获取该外星人的点数。
添加键—值对
字典是一种动态结构可随时在其中添加键—值对。要添加键—值对可依次指定字典名、用方括号括起的键和相关联的值。 下面在字典alien_0 中添加两项信息外星人的 x 坐标和 y 坐标让我们能够在屏幕的特定位置显示该外星人。我们将这个外星人放在屏幕左边缘且离屏幕上边缘25像素的地 方。由于屏幕坐标系的原点通常为左上角因此要将该外星人放在屏幕左边缘可将 x 坐标设置为0要将该外星人放在离屏幕顶部25像素的地方可将 y 坐标设置为25如下所 示
alien_0 {color: green, points: 5}
print(alien_0)
❶ alien_0[x_position] 0
❷ alien_0[y_position] 25
print(alien_0)我们首先定义了前面一直在使用的字典然后打印这个字典以显示其信息快照。在❶处我们在这个字典中新增了一个键—值对其中的键为’x_position’ 而值为0 。在 ❷处我们重复这样的操作但使用的键为’y_position’ 。打印修改后的字典时将看到这两个新增的键—值对
{color: green, points: 5}
{color: green, points: 5, y_position: 25, x_position: 0}这个字典的最终版本包含四个键—值对其中原来的两个指定外星人的颜色和点数而新增的两个指定位置。注意键—值对的排列顺序与添加顺序不同。Python不关心键—值对 的添加顺序而只关心键和值之间的关联关系。
先创建一个空字典
有时候在空字典中添加键—值对是为了方便而有时候必须这样做。为此可先使用一对空的花括号定义一个字典再分行添加各个键—值对。例如下例演示了如何以这种 方式创建字典alien_0
alien_0 {}
alien_0[color] green
alien_0[points] 5
print(alien_0)这里首先定义了空字典alien_0 再在其中添加颜色和点数得到前述示例一直在使用的字典
{color: green, points: 5}使用字典来存储用户提供的数据或在编写能自动生成大量键—值对的代码时通常都需要先定义一个空字典。
修改字典中的值
要修改字典中的值可依次指定字典名、用方括号括起的键以及与该键相关联的新值。例如假设随着游戏的进行需要将一个外星人从绿色改为黄色
alien_0 {color: green}
print(The alien is alien_0[color] .)
alien_0[color] yellow
print(The alien is now alien_0[color] .)我们首先定义了一个表示外星人alien_0 的字典其中只包含这个外星人的颜色。接下来我们将与键’color’ 相关联的值改为’yellow’ 。输出表明这个外星人确实从绿 色变成了黄色
The alien is green.
The alien is now yellow.来看一个更有趣的例子对一个能够以不同速度移动的外星人的位置进行跟踪。为此我们将存储该外星人的当前速度并据此确定该外星人将向右移动多远
alien_0 {x_position: 0, y_position: 25, speed: medium}
print(Original x-position: str(alien_0[x_position]))
# 向右移动外星人
# 据外星人当前速度决定将其移动多远
❶ if alien_0[speed] slow:
x_increment 1
elif alien_0[speed] medium:
x_increment 2
else:
# 这个外星人的速度一定很快
x_increment 3
# 新位置等于老位置加上增量
❷ alien_0[x_position] alien_0[x_position] x_increment
print(New x-position: str(alien_0[x_position]))我们首先定义了一个外星人其中包含初始的x 坐标和y 坐标还有速度’medium’ 。出于简化考虑我们省略了颜色和点数但即便包含这些键-值对这个示例的工作原理也 不会有任何变化。我们还打印了x_position 的初始值旨在让用户知道这个外星人向右移动了多远。 在❶处使用了一个if-elif-else 结构来确定外星人应向右移动多远并将这个值存储在变量x_increment 中。如果外星人的速度为’slow’ 它将向右移动一个单位 如果速度为’medium’ 将向右移动两个单位如果为’fast’ 将向右移动三个单位。确定移动量后将其与x_position 的当前值相加见❷再将结果关联到字典中 的键x_position 。 由于这是一个速度中等的外星人因此其位置将向右移动两个单位
Original x-position: 0
New x-position: 2这种技术很棒通过修改外星人字典中的值可改变外星人的行为。例如要将这个速度中等的外星人变成速度很快的外星人可添加如下代码行
alien_0[speed] fast这样再次运行这些代码时其中的if-elif-else 结构将把一个更大的值赋给变量x_increment 。
删除键—值对
对于字典中不再需要的信息可使用del 语句将相应的键—值对彻底删除。使用del 语句时必须指定字典名和要删除的键。 例如下面的代码从字典alien_0 中删除键’points’ 及其值
alien_0 {color: green, points: 5}
print(alien_0)
❶ del alien_0[points]
print(alien_0)❶处的代码行让Python将键’points’ 从字典alien_0 中删除同时删除与这个键相关联的值。输出表明键’points’ 及其值5 已从字典中删除但其他键—值对未受影响
{color: green, points: 5}
{color: green}注意 删除的键—值对永远消失了。
由类似对象组成的字典
在前面的示例中字典存储的是一个对象游戏中的一个外星人的多种信息但你也可以使用字典来存储众多对象的同一种信息。例如假设你要调查很多人询问他们最喜 欢的编程语言可使用一个字典来存储这种简单调查的结果如下所示
favorite_languages {
jen: python,
sarah: c,
edward: ruby,
phil: python,
}
❶ print(Sarahs favorite language is
❷ favorite_languages[sarah].title()
❸ .)为获悉Sarah 喜欢的语言我们使用如下代码
favorite_languages[sarah]在print 语句中我们使用了这种语法见❷输出指出了Sarah喜欢的语言
Sarahs favorite language is C.这个示例还演示了如何将较长的print 语句分成多行。单词print 比大多数字典名都短因此让输出的第一部分紧跟在左括号后面是合理的见❶。请选择在合适的地方拆 分要打印的内容并在第一行末尾见❷加上一个拼接运算符 。按回车键进入print 语句的后续各行并使用Tab键将它们对齐并缩进一级。指定要打印的所有内容 后在print 语句的最后一行末尾加上右括号见❸。