首页 > 解决方案 > 按值对具有不同键的字典列表进行排序

问题描述

我有一个只有一个键和一个值的字典列表。键总是不同的,值是浮点数。如何按价值对其进行排序?

example_list = [{'c47-d75 d75-e6b e6b-ff1 ff1-6d6 6d6-e63 e63-80c': 292.1799470129255}, {'805-7fd': 185.56518334219}, {'805-dd3 dd3-088 088-dd3 dd3-80c': 368.5010685728143}, {'805-6b5': 145.897977770909}, {'77e-805 805-7fd': 326.693786870932}, {'323-83d': 131.71963170528})

结果应按值排序,因此第一项应为

{'805-dd3 dd3-088 088-dd3 dd3-80c': 368.5010685728143}

能否请你帮忙?

标签: pythonsortingdictionary

解决方案


要根据字典的第一个值对列表进行排序,请传递一个函数sorted()来提取字典的第一个值。

  1. d.values()返回字典值的可迭代
  2. iter()生成字典值的迭代器
  3. 由于只有一个字典值(假设),调用next()迭代器返回第一个(也是唯一的)值。

要按最大值到最小值排序,请将reverse=True关键字参数传递给sorted().

def first_value(d):
    return next(iter(d.values()))

example_list = [{'c47-d75 d75-e6b e6b-ff1 ff1-6d6 6d6-e63 e63-80c': 292.1799470129255}, {'805-7fd': 185.56518334219}, {'805-dd3 dd3-088 088-dd3 dd3-80c': 368.5010685728143}, {'805-6b5': 145.897977770909}, {'77e-805 805-7fd': 326.693786870932}, {'323-83d': 131.71963170528}]

sorted_list = sorted(example_list, key=first_value, reverse=True)

print(sorted_list[0])

推荐阅读