在按键排序的dict中迭代键/值对

2024-04-19 11:37:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码,它只是在dict中打印键/值对(这些键/值对按键排序):

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 tutorial但它并没有真正回答我的问题。


Tags: 代码infor排序count情况itemsfilename
2条回答

在Python2.x中,两者都会给出相同的结果。它们之间的区别在于items构造了一个包含字典全部内容的列表,而iteritems提供了一个迭代器,一次获取一个条目。一般来说,iteritems是一个更好的选择,因为它不需要太多内存。但是现在你要对结果进行排序,这样在这种情况下可能不会有任何显著的不同。如果你怀疑iteritems是一个安全的赌注。如果性能真的很重要,那么就同时测量两个参数,看看哪个更快。

在Python 3.x中iteritems已经被删除,现在items可以做iteritems以前做的事情,解决程序员浪费时间担心哪个更好的问题。:)

附带说明:如果要计算单词的出现次数,可以考虑使用^{}代替普通dict(需要Python 2.7或更新版本)。

根据标记回答:在Python 2中,使用iteritems(),在Python 3中使用items()

此外,如果您需要同时支持这两种方法(并且不使用2to3),请使用:

counts = count_words(filename)
for word in sorted(counts):
     count = counts[word]

相关问题 更多 >