按键排序的字典中遍历键值对
我有以下这段代码,它只是打印字典中的键值对(这些键值对是按键排序的):
for word, count in sorted(count_words(filename).items()):
print word, count
不过,调用 iteritems()
而不是 items()
也会产生相同的输出。
for word, count in sorted(count_words(filename).iteritems()):
print word, count
那么,在这种情况下我应该选择哪个呢?我查阅了 Python教程,但它并没有真正回答我的问题。
2 个回答
10
根据Mark的回答:在Python 2中,使用iteritems()
,而在Python 3中,使用items()
。
另外,如果你需要同时支持这两个版本(并且不使用2to3
工具),可以使用:
counts = count_words(filename)
for word in sorted(counts):
count = counts[word]
76
在Python 2.x中,使用这两种方法得到的结果是一样的。它们的区别在于,items
会创建一个包含字典所有内容的列表,而iteritems
则是一个迭代器,它一次只取出一个项目。一般来说,iteritems
更好,因为它不需要占用太多内存。不过在这里你是在对结果进行排序,所以在这种情况下,使用哪种方法差别不大。如果你不确定,选择iteritems
是个安全的选择。如果性能很重要,那就试着测一下两者的速度,看看哪个更快。
在Python 3.x中,iteritems
被移除了,items
现在做的事情和以前的iteritems
一样,这样程序员就不用再担心哪个更好了。:)
顺便提一下:如果你是在统计单词出现的次数,可以考虑使用collections.Counter
,而不是普通的字典(需要Python 2.7或更新版本)。