小编典典

什么时候应该使用 iteritems() 而不是 items()?

all

items()在所有地方使用而不是在所有地方使用是否合法iteritems()?为什么iteritems()从 Python 3
中移除?似乎是一个了不起和有用的方法。背后的原因是什么?

编辑: 为了澄清,我想知道以与 Python 2 和 Python 3
兼容的方式以类似生成器的方式(一次一个项目,而不是全部进入内存)迭代字典的正确习惯用法是什么?


阅读 71

收藏
2022-08-29

共1个答案

小编典典

在 Python 2.x 中
-.items()返回
(key, value) 对的列表。在 Python 3.x
中,.items()现在是一个itemview对象,它的行为不同
- 所以它 必须 被迭代或物化......所以,对于Python 2.x
list(dict.items())的内容是必需的。dict.items()

Python 2.7
也有一些用于密钥处理的后端端口,因为你有viewkeys,viewitemsviewvalues方法,最有用的是viewkeys它的行为更像
a set(你希望从 a 中得到它dict)。

简单的例子:

common_keys = list(dict_a.viewkeys() & dict_b.viewkeys())

会给你一个公共键的列表,但同样,在 Python 3.x 中 - 只是使用.keys()

Python 3.x
通常变得更加“懒惰”——即map现在是有效的itertools.imapzip是的itertools.izip,等等。

2022-08-29