繁体   English   中英

根据键名不同的值对字典列表进行排序

[英]Sort list of dictionaries based on values where keys have different names

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

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

列表中的所有词典都有一对键值对。

我想根据每个字典值的第一个元素(一个列表)对它进行排序,因此排序后的列表看起来像:

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

如您所见,这些键具有不同的名称,这就是为什么我不能使用以下文章提供的答案的原因: 如何按字典值对字典列表进行排序?

您可以使用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])
sorted(my_list,key=lambda x: list(x.values())[0][0])
Out[114]: [{'9564': [6, 'D']}, {'1200': [10, 'A']}, {'1000': [24, 'C']}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM