2016-07-23 3 views
0

私は、辞書のリストを以下している:ソートリスト

test_list = [ 
     {'sr_no': 1, 'recipe_type': 'Main Dish', 'name': 'Salmon & Brown Rice'}, 
     {'sr_no': 2, 'recipe_type': 'Side Dish', 'name': 'Cupcakes'}, 
     {'sr_no': 3, 'recipe_type': 'Main Dish', 'name': 'Whole chicken'}, 
     {'sr_no': 4, 'recipe_type': 'Desserts', 'name': 'test'} 
    ] 

私はアルファベット順にname指標値のベースにそれをソートする必要があります。以下のように:

test_list = [ 
     {'sr_no': 2, 'recipe_type': 'Side Dish', 'name': 'Cupcakes'}, 
     {'sr_no': 1, 'recipe_type': 'Main Dish', 'name': 'Salmon & Brown Rice'}, 
     {'sr_no': 4, 'recipe_type': 'Desserts', 'name': 'test'} 
     {'sr_no': 3, 'recipe_type': 'Main Dish', 'name': 'Whole chicken'}, 
    ] 

私はSOとgoogleでこれを検索しましたが、明確な答えは見つかりませんでした。あなたがsortedに各辞書からnameを返すkey関数を渡すことができ

+0

'; – styvane

+4

[辞書のリストをPythonの辞書の値で並べ替えるにはどうすればいいですか?](http://stackoverflow.com/questions/72899/how(英語)) -do-i-sort-a-dictionary-in-the-python辞書による値のリスト) – styvane

答えて

2

オペレータのインポートitemgetterから
>>> import pprint 
>>> test_list = [ 
...   {'sr_no': 1, 'recipe_type': 'Main Dish', 'name': 'Salmon & Brown Rice'}, 
...   {'sr_no': 2, 'recipe_type': 'Side Dish', 'name': 'Cupcakes'}, 
...   {'sr_no': 3, 'recipe_type': 'Main Dish', 'name': 'Whole chicken'}, 
...   {'sr_no': 4, 'recipe_type': 'Desserts', 'name': 'test'} 
...  ] 
>>> pprint.pprint(sorted(test_list, key=lambda x: x['name'].lower())) 
[{'name': 'Cupcakes', 'recipe_type': 'Side Dish', 'sr_no': 2}, 
{'name': 'Salmon & Brown Rice', 'recipe_type': 'Main Dish', 'sr_no': 1}, 
{'name': 'test', 'recipe_type': 'Desserts', 'sr_no': 4}, 
{'name': 'Whole chicken', 'recipe_type': 'Main Dish', 'sr_no': 3}] 
+0

ありがとうございますが、ソート結果は必要ではありません。名前はアルファベット順にソートされません。全体の鶏は最後の位置に来るはずです。 – Simer

+1

@Simerおっと、あなたは大文字と小文字で始まる名前がないことに気付かなかった。これは、名前を私が答えを変更した下位(または上位)のケースに変換することによって緩和できます。 – niemmi

+0

ありがとう!それは完璧にうまくいった。 – Simer