小编典典

Python2 中的 dict.items() 和 dict.iteritems() 有什么区别?

all

dict.items()和之间有任何适用的区别dict.iteritems()吗?

来自Python 文档

dict.items():返回字典的(键,值)对列表的 副本。

dict.iteritems():在字典的(键,值)对上返回一个 迭代器。

如果我运行下面的代码,每个似乎都返回对同一对象的引用。我是否缺少任何细微的差异?

#!/usr/bin/python

d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
   if d[k] is v: print '\tthey are the same object' 
   else: print '\tthey are different'

print 'd.iteritems():'   
for k,v in d.iteritems():
   if d[k] is v: print '\tthey are the same object' 
   else: print '\tthey are different'

输出:

d.items():
    they are the same object
    they are the same object
    they are the same object
d.iteritems():
    they are the same object
    they are the same object
    they are the same object

阅读 93

收藏
2022-03-02

共1个答案

小编典典

这是进化的一部分。

最初,Pythonitems()构建了一个真实的元组列表并将其返回。这可能会占用大量额外的内存。

然后,生成器被引入到语言中,并且该方法被重新实现为名为 的迭代器-生成器方法iteritems()。原始保留是为了向后兼容。

Python 3 的一个变化是 items()现在返回视图,并且
alist永远不会完全构建。该iteritems()方法也消失了,因为items()在 Python 3
中的工作方式与viewitems()在 Python 2.7 中一样。

2022-03-02