在按键sorting的字典中迭代键/值对
我有下面的代码,它只是在一个字典中打印键/值对(对按键sorting):
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
现在,在这种情况下我应该select哪一个呢? 我咨询了Python教程,但并没有真正回答我的问题。
在Python 2.x中都会给你相同的结果。 它们之间的区别是items
构造了一个包含整个字典内容的列表,而iteritems
您提供了一个迭代器来一次获取一个项目。 一般来说, iteritems
是一个更好的select,因为它不需要太多的记忆。 但在这里你正在sorting的结果,所以这可能不会在这种情况下有任何重大的不同。 如果你有疑问iteritems
是一个安全的赌注。 如果performance真的很重要,那么衡量两者,看看哪个更快。
在Python 3.x中, iteritems
已被删除, items
现在做了它iteritems
事情,解决了程序员浪费时间担心哪个更好的问题。 🙂
作为一个侧面说明:如果你正在计算词的出现,你可能要考虑使用collections.Counter
而不是一个普通的字典(需要Python 2.7或更新版本)。
按照Marks的答案:在Python 2中,使用iteritems()
,在Python 3中使用items()
。
另外, 如果您需要同时支持(并且不使用2to3
),请使用:
counts = count_words(filename) for word in sorted(counts): count = counts[word]