items()代替iteritems()在所有地方使用是否合法?为什么iteritems()从Python 3中删除?似乎是一种了不起的,有用的方法。它背后的原因是什么?
items()
iteritems()
编辑: 为澄清起见,我想知道以类似于生成器的方式(一次将一项,而不是全部都存储到内存中)以与Python 2和Python 3兼容的方式遍历字典的正确习惯是什么。 ?
在Python 2.x中-.items()返回(键,值)对的列表。在Python 3.x中,.items()现在是一个itemview对象,其行为各不相同- 因此 必须 对其进行迭代或实例化…因此,Python 2.x中的对象list(dict.items())是必需的dict.items()。
.items()
itemview
list(dict.items())
dict.items()
Python 2.7版也有一个有点背口密钥处理的,在你有viewkeys,viewitems而且viewvalues方法,最有用的存在viewkeys,其表现更像是一个set(你想从预期dict)。
viewkeys
viewitems
viewvalues
set
dict
简单的例子:
common_keys = list(dict_a.viewkeys() & dict_b.viewkeys())
会为您提供常见键的列表,但是同样,在Python 3.x中-只需使用即可.keys()。
.keys()
通常使Python 3.x更加“懒惰”-即map现在有效itertools.imap,zipisitertools.izip等等。
map
itertools.imap
zip
itertools.izip