items()在所有地方使用而不是在所有地方使用是否合法iteritems()?为什么iteritems()从 Python 3 中移除?似乎是一个了不起和有用的方法。背后的原因是什么?
items()
iteritems()
编辑: 为了澄清,我想知道以与 Python 2 和 Python 3 兼容的方式以类似生成器的方式(一次一个项目,而不是全部进入内存)迭代字典的正确习惯用法是什么?
在 Python 2.x 中 -.items()返回 (key, value) 对的列表。在 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它的行为更像 a set(你希望从 a 中得到它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,zip是的itertools.izip,等等。
map
itertools.imap
zip
itertools.izip