字典实战——在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迁移的难度。

本文章首发在 金年会app官方网 网站上。

下一篇
讨论数量: 0



暂无话题~
网站地图