python 字典(dict)默认使用的是只根据 key 排序,如果需要将字典按值排序的话,那可以用下面的几种方法来进行:
我们主要是使用 sorted 函数操作:
def sorted(iterable: Iterable[_T], key: Optional[Callable[[_T], Any]]=..., reverse: bool=...)
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the reverse flag can be set to request the result in descending order.
'''
Args:
iterable: 表示可以迭代的对象, 可以是dict.items()、dict.keys()等
key:可选,用来选取参与比较的元素
reverse:用来指定排序是倒序还是顺序,reverse=True则是倒序,reverse=False时则是顺序,默认为False。
Return:
返回一个新的按固定顺序排好的列表
'''
方法一:
dict_data = {'a': 12, 'd': 9, 'f': 13, 'b': 25}
new_list = sorted(dict_data.items(), key=lambda item: item[1],reverse=True)
# key=lambda item: item[0] 表示按照key 排序
方法二(推荐):
import operator
dict_data = {'a': 12, 'd': 9, 'f': 13, 'b': 25}
new_list = sorted(dict_data.items(), key=operator.itemgetter(1),reverse=True)
# key=operator.itemgetter(0) 表示按照key 排序
输出结果:
[('b', 25), ('f', 13), ('a', 12), ('d', 9)]