字典实战——在python 3.x 和 2.7 中的字典改变 | 第二部分 类型与操作 —— 第 8 章: 列表和字典 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-大发黄金版app下载
本章到目前为止一直关注跨版本的字典基础,但在3.x中字典功能已经发生了突变。如果在使用2.x的代码,可能会遇到一些字典工具在3.x中要么表现得不同,要么完全缺失了。而且,3.x的编码者可以访问2.x中无法访问的额外字典工具(除了两个后向移植到2.7的)。
在3.x中的字典专有:
- 支持新的字典comprehension表达式,类似与列表和set comprehension
- 方法
d.keys
、d.values
、d.items
返回类set的可迭代的views
而非列表 - 因为前一点,需要通过排序的键用于扫描的新编码样式
- 不再支持直接地相对数值比较——而是手动比较
- 不再有
d.has_key
方法——而是使用in
成员测试
因为以后从3.x中后向移植,2.7中的字典(但不是更早的2.x):
- 支持前一个列表中的项1——字典 comprehension——作为3.x的直接后向移植
- 支持前一个列表中的项2——类set的可迭代的
views
——但是通过特殊方法名d.viewkeys
、d.viewvalues
、d.viewitems
;它们的nonview方法和以前一样返回列表
因为这些重叠,本节中的一些材料同时属于3.x和2.7,但被展示在3.x扩展的上下文中,因为它的起源。记住这一点,让我们了解一下在3.x和2.7中字典有哪些新增功能。