2015-11-09 142 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