【问题标题】:Python how to sort a list of nested dictionaries by dictionary keys?Python如何按字典键对嵌套字典列表进行排序?
【发布时间】:2019-02-08 02:31:46
【问题描述】:

我有一个嵌套字典列表,格式为:

list = [{key1: (tuple_value1, tuple_value2)}, {key2: (tuple_value1, tuple_value2)}, {key3: (tuple_value1, tuple_value2)}, ...]

如何根据此列表中的 KEYS 对该列表进行排序?我希望对列表进行排序,以便键按字母顺序排列。

我找到了一个表达式,可以按我认为的值排序:

newlist = sorted(list_to_be_sorted, key=lambda k: k['name']) 

但是我还没有成功的按键排序。

【问题讨论】:

  • 你可以做key=lambda k: k.keys()。所以它会按每个字典的键排序。

标签: python list sorting dictionary nested


【解决方案1】:

尝试(适用于两个版本):

>>> lod=[{'b':[1,2,3]},{'a':[4,5,6]}]
>>> sorted(lod,key=lambda x: list(x.keys()))
[{'a': [4, 5, 6]}, {'b': [1, 2, 3]}]
>>> 

当然这也可以(适用于两个版本):

>>> lod=[{'b':[1,2,3]},{'a':[4,5,6]}]
>>> lod.sort(key=lambda x: list(x.keys()))
>>> lod
[{'a': [4, 5, 6]}, {'b': [1, 2, 3]}]
>>> 

但是对于 python 2,@ManojJadhav 的答案是最好的,因为它更快,而不是在外面使用 list,(这可以用更大的字典做相当大的改变)

【讨论】:

  • 因为我使用的是 Python 3,所以我接受了这个答案,但 @ManojJadhav 值得一票。我应该在我的初始帖子中指定版本
  • @Hanzy 谢谢,绝对在 python 2 中使用 ManojJadhav,是的,他值得一票,很高兴它有效,我帮助了,?
【解决方案2】:

你可以的。这将按键对您的字典进行排序。这仅适用于 Python 2.7

newlist = sorted(list_to_be_sorted, key=lambda k: k.keys()) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2022-01-27
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多