2015-11-09 92 views
1

我有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'}}] 

我该如何做到这一点。请告诉我。

+2

你肯定一本字典是在这个例子中,正确的架构? – jamylak

回答

3

使用list.sort(以就地排序)或sortedkey参数(以获得新的排序列表):

>>> 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'}}] 
+0

'lambda' express也可以这样写:'lst.sort(key = lambda d:d.items()[0] [0])' – Hooting

+0

@Hooting,1.它在Python 3.x中不起作用, dict.items'返回一个迭代器,而不是一个列表。 2.为什么不'list(d.keys())[0]'或者'list(d)[0]'?,只需要一个键,而不是一个值。 – falsetru