在Python中按值排序字典

4 投票
5 回答
13613 浏览
提问于 2025-04-16 15:40

我有一个字典,里面的键是单词,值是整数。

请问可以按照值来给这个字典排序吗?

我想找出字典中出现次数最多的前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() 方法把字典转换成一个包含元组的列表,然后通过给 sortkey 参数传入合适的比较函数来进行排序。

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个。

撰写回答