Python:基于键具有不同名称的值对字典列表进行排序

时间:2018-01-08 19:24:11

标签: python sorting dictionary

我有一个字典列表,如下所示:

my_list = [
          {'1200' : [10, 'A']},
          {'1000' : [24, 'C']},
          {'9564' : [6, 'D']},
          ]

我希望根据列表中每个词典值的第一个元素对其进行排序,因此排序列表如下所示:

my_list_sorted = [
          {'9564' : [6, 'D']},
          {'1200' : [10, 'A']},
          {'1000' : [24, 'C']},
          ]

正如您所看到的,键具有不同的名称,这就是为什么我无法使用stackoverflow上发布的其他答案。

由于

更新:列表中的所有词典都有一个键值对

2 个答案:

答案 0 :(得分:4)

sorted(my_list,key=lambda x: list(x.values())[0][0])
Out[114]: [{'9564': [6, 'D']}, {'1200': [10, 'A']}, {'1000': [24, 'C']}]

答案 1 :(得分:3)

您可以使用values()访问dict元素:

sorted(my_list, key=lambda x: x.values()[0][0])

输出:

[
  {'9564': [6, 'D']},
  {'1200': [10, 'A']},
  {'1000': [24, 'C']}
]

这假设每个条目都包含一个至少包含一个元素的列表。

编辑PYTHON 3

正如@cᴏʟᴅsᴘᴇᴇᴅ所指出的那样,values()不会在python3中返回一个列表,所以你必须这样做:

sorted(my_list, key=lambda x: list(x.values()[0])[0])