首页 > 解决方案 > 按值对字典进行排序

问题描述

sort_orders = sorted(orders.items(), key=lambda x: x[1], reverse=True)

有人可以解释如何key=lambda x: x[1]按值对字典进行排序吗?

标签: pythonsortingdictionarylambdadictionary-comprehension

解决方案


dict.items()返回 itemview 对象。它是这样的:

dict_items([('key_1', 'val_1'), ('key_2', 'val_2'), ('key_3', 'val_3')])

因此,如果您将此对象传递给 sorted 并放入 key 参数,因为lambda x: x[1]它将根据 itemview 中每个元组的第一个索引对 itemview 对象进行排序。当 reverse 参数设置为 True 时,它​​将进一步将该顺序设置为降序

如果我尝试通过一个示例来解释这一点,请考虑:

orders={'order_1':'Pizza','order_2':'Chicken','order_3':'Lasagne'}

sort_orders = sorted(orders.items(), key=lambda x: x[1], reverse=True)

print(sort_orders) #1

print(orders.items()) #2

#1 Print 为您提供:

[('order_1', 'Pizza'), ('order_3', 'Lasagne'), ('order_2', 'Chicken')]

#2 Print 为您提供:

dict_items([('order_2', 'Chicken'), ('order_1', 'Pizza'), ('order_3', 'Lasagne')])

有关排序的更多信息,请访问此python 文档

希望这可以帮助 !


推荐阅读