字典实战——在python 3.x 和 2.7 中的字典改变—— has-大发黄金版app下载
最后,广泛使用的字典 has_key
键存在测试方法在3.x中消失了。作为替代,使用 in
成员表达式,或有默认测试的get
(其中,通常in
更可取):
>>> d
{'b': 2, 'c': 3, 'a': 1}
>>> d.has_key('c') # 2.x only: true/false
attributeerror: 'dict' object has no attribute 'has_key'
>>> 'c' in d # required in 3.x
true
>>> 'x' in d # preferred in 2.x today
false
>>> if 'c' in d: print('present', d['c']) # branch on result
...
present 3
>>> print(d.get('c')) # fetch with default
3
>>> print(d.get('x'))
none
>>> if d.get('c') != none: print('present', d['c']) # another option
...
present 3
总结一下,字典的故事在3.x中改变了很多。如果在2.x中工作并关心3.x的兼容性(或认为某一天可能会),下面是一些指南。在本节已经遇到的3.x改变中:
- 第一个(字典comprehension)只能在3.x和2.7中编码。
- 第二个(字典视图)只能在3.x中编码,在2.7中使用特殊方法名称才行。
然而,最后三个技术—— sorted
,手动比较和in
——可以在今天的2.x中编码来减轻在未来3.x迁移的难度。