购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 古老的密码机:字典的魔法

小鱼和魔法师来到了一个神秘的石室门口,门口摆放着一台奇形怪状的机器。机器上面布满了岁月的痕迹和斑驳的苔藓,给人一种古老而神秘的感觉,仿佛它蕴藏着无尽的魔法力量,等待着有缘人来解锁。

魔法师指着机器说:“这是一个古老的魔法密码机,只有解锁它才能打开石室的大门。”

小鱼仔细观察密码机,发现上面有三行提示文字:

天空中最亮的

夜晚的守护者

白天的主宰

img

他猜测这些文字可能是解开密码机密码的关键。

魔法师点点头:“没错,这个密码机的密码是由多个键值对组成的。你需要找到正确的键值对,然后用字典的魔法将它们组合起来,才能解锁密码机。”

小鱼疑惑的问:“字典的魔法?”

魔法师:“是的,接下来我给你讲讲字典。”

字典在编程的魔法世界中扮演着非常重要的角色,它不仅仅是一个存储数据的容器,更是一个能快速查找、修改和删除数据的强大工具。想象一下,你有一个巨大的宝物箱,每个宝物都有一个唯一的标签,你可以通过这个标签迅速找到对应的宝物,这就是字典的魔法所在。

1.创建字典

在Python中,字典是一个无序的数据集合,使用键值对进行数据存储。

字典的创建非常简单。与列表使用方括号[]不同,字典使用大括号{}。在字典中,数据是以键值对的形式进行存储的。每个键都与一个值相关联,键和值之间用冒号分隔,例如:

img

在上面的代码中,name、age和magic_skill都是键,小鱼、15和Python是与这些键对应的值。字典my_dict为我们提供了关于小鱼的信息:小鱼的名字、年龄和魔法技能。

2.访问字典中的值

要访问字典中的值,可以使用与列表和元组相似的索引方法。与列表不同,我们使用键来访问字典中的值,而不是使用索引:

img

这样,即使你不知道数据在字典中的位置,也可以迅速找到它。

3.修改字典

字典是动态可变的,这意味着你可以随时更改、添加或删除键值对。如果你知道某个键,则可以直接使用这个键修改其对应的值:

img

4.添加新的键值对

字典的灵活性使我们可以随时向其中添加新的数据。与修改现有的键值对类似,你可以直接为字典分配一个新的键和值,即使这个键之前在字典中并不存在:

img

5.删除键值对

有时,我们可能不再需要某个键值对,可以使用del语句进行删除:

img

6.字典的常用方法

Python为字典提供了一系列内置方法,可以帮助我们更高效地处理数据,使操作字典变得更加简单。

例如,你可以获取字典中所有的键、值或键值对:

img
img

这段代码使用字典的keys()方法,获取my_dict中的所有键。keys()方法返回一个特殊的视图对象all_keys,它会动态地显示字典的键。这意味着如果在后续的代码中修改了my_dict,all_keys会自动更新这些更改。视图对象可以被转换为列表或其他集合,通常在迭代循环中可以直接使用视图对象。

同时,这段代码使用了字典的values()方法来获取my_dict中的所有值。与keys()方法类似,values()方法也返回一个动态的视图对象,会显示字典的当前值。如果字典被修改,则这个视图对象也会自动更新。

此外,这段代码使用了字典的items()方法,获取my_dict中的所有键值对。此方法返回一个视图对象,其中每一项都是一个键值对,表示为一个元组,其中第一个元素是键,第二个元素是值。这使我们可以在一个循环中同时迭代键和值,如使用for循环(关于循环,后续将详细讲解):

img

同样地,这个视图对象也是动态的,如果my_dict被修改,则all_items会自动更新。

7.检查键是否存在

在使用字典时,通常需要检查某个键是否存在于字典中,以避免错误。Python提供了一个简单的方法检查键是否存在,即使用关键字in来检查键是否存在于字典中:

img
img

8.获取字典的长度

你可能想知道一个字典中有多少个键值对。与列表和字符串类似,使用Python的len()函数可以迅速得到这个信息:

img

9.嵌套的字典

字典的值可以是任何数据类型,甚至可以是一个字典,这为数据提供了灵活性。

在某些情况下,一个键可能需要与多个值相关联,而不仅仅关联一个值。在这种情况下,你可以使用字典来存储这些值,这样,字典中的一个键就会关联到另一个字典,形成嵌套字典。

img

这段代码首先定义了一个名为users的变量,并为该变量分配了一个包含两个键值对的字典。这个字典的特点是值也是字典。

● 在第一个键值对中,“小鱼”是外部字典的键,而其关联的值是另一个字典,这个内部字典包含了两个键值对:"age":10和"magic_skill":"Python"。这表示小鱼的年龄是10岁,她的魔法技能是“Python”。

● 在第二个键值对中,“魔法师”是外部字典的键,而其关联的值也是一个字典,这个内部字典包含了两个键值对:"age":100和"magic_skill":"All"。这表示魔法师的年龄是100岁,他的魔法技能是“所有技能”。

我们可以从嵌套字典中访问特定的值。使用users["小鱼"]来访问外部字典中键为“小鱼”的值,这会返回一个内部字典。接着使用["magic_skill"]来访问这个内部字典中键为magic_skill的值。因此,整个表达式的结果是字符串Python,这个值被赋给了变量magic_skill。

小鱼学完字典的知识后,再次看了一下密码机上的提示文字:

天空中最亮的

夜晚的守护者

白天的主宰

小鱼心想,这跟字典有什么关系呢?如何把这三句话跟字典联系起来呢?

正当小鱼一筹莫展的时候,魔法师说:“小鱼,你再回顾一下字典的特点,字典使用键值对进行数据存储,每个键对应一个值。”

“可是这里没有键值对,只有三句话啊。”小鱼依然感到迷茫。他再次将这三句话读了一篇,突然眼睛一亮,他发现这三句话其实并不完整。他立马在自己的笔记本中写下了以下三句话:

img

接着小鱼使用Python程序将这三句话存储在字典中:

img
img

这时,伴随着石头移动的声音,石室的大门缓缓打开。小鱼非常兴奋,他成功使用字典的知识,解锁了古老的密码机,并成功打开进入石室的大门。

魔法小贴士

字典是Python中非常强大的数据结构,允许我们存储键值对,使我们能快速查找、添加、修改或删除数据。随着学习的深入,你会发现字典在数据处理、算法设计等领域都有广泛的应用。掌握字典的使用是成为Python高手非常关键的一步。在使用字典时,需要注意:

● 字典中的键必须是唯一的,不能有重复。

● 字典中的键是不可变的,这意味着你可以使用数字、字符串或元组作为字典的键,但不能使用列表。

● 尽管字典的键是不可变的,但字典的值可以是任何类型的数据,包括数字、字符串、列表、其他字典。

● 字典是无序的,这意味着添加键值对的顺序并不保证在后续的访问中仍然是这个顺序。但从Python 3.7开始,字典会保持插入顺序,这意味着当你遍历字典时,键值对会按照它们被添加到字典中的顺序返回内容。 8aJ0bR3Lu+b/QEc3aH5kiFOmaMCQSub/v8jln7zIEFRLLg4UufpGbzVKW7OLOyVT

点击中间区域
呼出菜单
上一章
目录
下一章
×