dict.items()和之间有适用的区别dict.iteritems()吗?
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
这是演变的一部分。
最初,Python items()构建了一个真正的元组列表,并将其返回。这可能会占用大量额外的内存。
Python items()
然后,一般将生成器引入该语言,然后将该方法重新实现为名为的迭代器-生成器方法iteritems()。保留原始版本是为了向后兼容。
iteritems()
Python 3的更改之一是 items()现在返回迭代器,并且列表从未完全构建。该iteritems()方法也消失了,因为items()在Python 3中的工作方式与viewitems()在Python 2.7中一样。
items()
viewitems()