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

Python: sort list of dictionaries based on values where keys have different names

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
my_list = [
          {'1200' : [10, 'A']},
          {'1000' : [24, 'C']},
          {'9564' : [6, 'D']},
          ]

我想根据每个字典值的第一个元素对其进行排序,这是一个列表,所以排序后的列表如下所示:

1
2
3
4
5
my_list_sorted = [
          {'9564' : [6, 'D']},
          {'1200' : [10, 'A']},
          {'1000' : [24, 'C']},
          ]

正如您所看到的,这些键有不同的名称,这就是为什么我不能使用StackOverflow上发布的其他答案的原因。

谢谢

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


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

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

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

输出:

1
2
3
4
5
[
  {'9564': [6, 'D']},
  {'1200': [10, 'A']},
  {'1000': [24, 'C']}
]

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

为python 3编辑

作为@ C????S?????指出,values()没有返回python3中的列表,因此您必须执行以下操作:

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