📅  最后修改于: 2023-12-03 15:39:48.225000             🧑  作者: Mango
在 Python 中,字典是无序的集合。但是,如果我们想要按照值对字典进行排序,我们可以使用一些简单的技巧。
使用 Python 的内置函数 sorted()
可以按照键值的顺序对字典进行排序,并将排序后的结果返回为一个列表。我们可以使用 key
参数来指定排序的规则。例如,对于如下的字典:
my_dict = {'apple': 25, 'banana': 39, 'orange': 15, 'watermelon': 30}
我们可以按照值(数量)从小到大的顺序来排序:
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
这将返回一个按照值排序的元组列表:
[('orange', 15), ('apple', 25), ('watermelon', 30), ('banana', 39)]
如果我们想要按照值从大到小的顺序排序,我们可以使用 reverse
参数:
sorted_dict = sorted(my_dict.items(), key=lambda x: x[1], reverse=True)
这将返回一个按照值从大到小排序的元组列表:
[('banana', 39), ('watermelon', 30), ('apple', 25), ('orange', 15)]
Python 中的 operator 模块提供了一些对序列进行操作的函数。我们可以使用 itemgetter()
函数来按照键或值排序。例如,要按照值从小到大的顺序对字典进行排序,我们可以使用如下代码:
import operator
my_dict = {'apple': 25, 'banana': 39, 'orange': 15, 'watermelon': 30}
sorted_dict = sorted(my_dict.items(), key=operator.itemgetter(1))
这将返回一个按照值从小到大排序的元组列表:
[('orange', 15), ('apple', 25), ('watermelon', 30), ('banana', 39)]
如果我们要按照值从大到小排序,我们可以使用 itemgetter()
函数的 reverse
参数:
sorted_dict = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)
这将返回一个按照值从大到小排序的元组列表:
[('banana', 39), ('watermelon', 30), ('apple', 25), ('orange', 15)]
需要注意的是,使用 operator 模块可以提高代码的可读性和可维护性。
以上就是按值对字典排序的两种简单方法。