在Python中按值排序字典
我有一个字典,里面的键是单词,值是整数。
请问可以按照值来给这个字典排序吗?
我想找出字典中出现次数最多的前10个单词。值代表单词的出现次数,键则是单词本身。
counter = 9
for a,b in sorted(dict_.iteritems()):
if counter > 0:
print str(a),str(b)+"\n"
counter-=1
这是我目前的代码,但它只打印出了字典中的前10个项目。我该如何打印出出现频率最高的前10个项目呢?(也就是值最大的那些?)
5 个回答
2
试试这个代码:sorted(dict_.iteritems(), key=lambda item: -item[1])
。
2
Python中的字典是无序的,也就是说里面的元素没有固定的顺序。不过,你可以使用 items()
方法把字典转换成一个包含元组的列表,然后通过给 sort
的 key
参数传入合适的比较函数来进行排序。
sorted()
函数也有类似的 key
参数。如果你想根据字典中的值进行排序,可以使用 lambda item: item[1]
这个表达式来提取 items()
和 iteritems()
中的值。然后你就可以简单地取出前 N 个元素。
所以……
for a, b in sorted(dict_.iteritems(), key=lambda item: item[1], reverse=True)[:10]:
print a, b
2
使用
sorted(dict_.iteritems(), key=lambda x:x[1])
或者
import operator
sorted(.... key=operator.itemgetter(1))
来根据元素的值进行排序。你可以使用 reverse=True
这个参数来反转结果的顺序(默认是从小到大排序),还可以用切片表示法(results[:10]
)来只获取前10个元素。你也可以不使用反转参数,直接用 [-10:]
来获取最大的10个。