【问题标题】:Sort a list of dictionary based on dictionary key根据字典键对字典列表进行排序
【发布时间】:2015-11-09 03:36:32
【问题描述】:

我有一个python字典列表如下:

[{'k':{'fruit':'apple','flower':'lily'}},
 {'a':{'fruit':'mango','flower':'lotus'}},
 {'e':{'fruit':'peach','flower':'rose'}}]

我想根据以下格式的字典键对列表进行排序。

[{'a':{'fruit':'mango','flower':'lotus'}},
 {'e':{'fruit':'peach','flower':'rose'}},
 {'k':{'fruit':'apple','flower':'lily'}}]

我怎样才能做到这一点。请给我建议。

【问题讨论】:

  • 你确定字典在这个例子中是正确的结构吗?

标签: python list sorting dictionary key


【解决方案1】:

使用list.sort(就地排序)或sorted(获取新的排序列表)和key参数:

>>> lst = [
...     {'k': {'fruit': 'apple', 'flower': 'lily'}},
...     {'a': {'fruit': 'mango', 'flower': 'lotus'}},
...     {'e': {'fruit': 'peach', 'flower': 'rose'}}
... ]
>>> lst.sort(key=lambda d: next(iter(d)))
>>> lst
[{'a': {'fruit': 'mango', 'flower': 'lotus'}},
 {'e': {'fruit': 'peach', 'flower': 'rose'}},
 {'k': {'fruit': 'apple', 'flower': 'lily'}}]

【讨论】:

  • lambda快递也可以写成:lst.sort(key=lambda d: d.items()[0][0])
  • @Hooting, 1. 它在 Python 3.x 中不起作用,其中dict.items 返回一个迭代器,而不是一个列表。 2. 为什么不用list(d.keys())[0]list(d)[0]?,只需要key,不需要value。
猜你喜欢
  • 2015-11-23
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多