字典——映射操作

未匹配的标注

当写作字面量时,字典被编码在大括号中并由一系列“键:值”对组成。当需要用键和一组值联系起来时(比如,描述某事物的属性),字典很有用。举个例子,考虑下面含有三个项的字典(有键“food”,“quantity”和“color”,或许还有一个假想的菜单明细?):

>>> D = {'food': 'Spam', 'quantity': 4, 'color': 'pink'}

可以通过键索引这个字典来获取和更改该键的相关值。字典索引操作使用和在序列中使用的相同语法,但在方括号中的项是键,而非相对位置:

>>> D['food'] # 获取键“food”的值
'Spam'
>>> D['quantity'] += 1 # 给“quantity”的值加1
>>> D
{'color': 'pink', 'food': 'Spam', 'quantity': 5}

虽然构建字典的大括号字面量形式确实有在使用,但其他方式更常见(在程序运行前就知道所有的程序数据是很少见的)。比如,下面的代码以空字典开始并一次填充一个键值对。不像列表中的边界外赋值(它是禁止的),对新字典键的赋值创建了那些键:

>>> D = {}
>>> D['name'] = 'Bob' # 通过赋值创建键
>>> D['job'] = 'dev'
>>> D['age'] = 40
>>> D
{'age': 40, 'job': 'dev', 'name': 'Bob'}
>>> print(D['name'])
Bob

这里正有效地使用字典键作为一条描写某人的记录的字段名。在其他应用中,字典还能被用来替换搜索操作——通过键索引字典通常是在Python中编码搜索的最快方法。

后面将学:还可以通过将关键词参数(在函数调用中的一个特殊的name=value语法)或将运行时(比如,从文件)获得的键和值序列的合并结果传递给 dict类型名称来创建字典。下面两种方法都创建和前面例子和它的等价{}字面量形式相同的字典,然而第一个往往输入更少:

>>> bob1 = dict(name='Bob', job='dev', age=40) # 关键词
>>> bob1
{'age': 40, 'name': 'Bob', 'job': 'dev'}
>>> bob2 = dict(zip(['name', 'job', 'age'], ['Bob', 'dev', 40])) # 合并
>>> bob2
{'job': 'dev', 'name': 'Bob', 'age': 40}

注意字典键的从左到右顺序是如何被弄乱的。映射不是按位置排序的,所以除非很幸运,它们的结果的顺序和输入不同。确切的顺序根据Python的不同而可能不同,但不应该依赖它,也不应该期待你的结果匹配本书中的结果。

在Python 3.10中,输入顺序和结果顺序一致。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~