2016-12-01 4 views
-1

私はしばらくdictsの長いリストで作業してきたし、私の好きなようにそれを並べ替える方法の周りに私の頭を包んでいるように見えることはできません。ここでは短い例です:dictsのリストをpythonの1つのdictに結合する最も良い方法は?

artist_movement = [ 
{'movement': 'Abstract Expressionism', 'artist': 'William Baziotes'}, 
{'movement': 'Modern Art', 'artist': 'Alexander Calder'}, 
{'movement': 'Abstract Expressionism', 'artist': 'Grace Hartigan'}, 
{'movement': 'Cubism', 'artist': 'Pablo Picasso'}, 
{'movement': 'Cubism', 'artist': 'Peter Blume'}, 
{'movement': 'Abstract Expressionism', 'artist': 'Norman Wilfred Lewis'}, 
{'movement': 'Modern Art', 'artist': 'Lucian Freud'} 
] 

私はこれと同様にして移動することによってアーティストでソートしたいと思います:任意の助け

artist_by_movement = [ 
{'Abstract Expressionism':['William Baziotes', 'Grace Hartigan', 'Norman Wilfred Lewis']}, 
{'Modern Art':['Alexander Calder', 'Lucian Freud']}, 
{'Cubism':['Peter Blume', 'Pablo Picasso']} 
] 

感謝を!

+0

を行うことができ、あなたはSO /似た何かのためにGoogleに上の見たことがありますか?合併辞典がたくさん出てくる... –

+5

[this](http://stackoverflow.com/questions/2365921/merging-python-dictionaries)は役に立ちますか? –

+0

はい、ありがとう、私の問題(キーでdictsのリストをマージする)に直接関連する良い説明のために数時間見ましたが、何も見つかりませんでした。 – djangonoob

答えて

4

defaultdictを使用して、キーが動きであり、値がその動きのアーティストのリストであるdictを作成できます。すべてのdefaultdictは、新しいキーが見えるときにリストを自動作成します。

import collections 

artist_movement = [ 
{'movement': 'Abstract Expressionism', 'artist': 'William Baziotes'}, 
{'movement': 'Modern Art', 'artist': 'Alexander Calder'}, 
{'movement': 'Abstract Expressionism', 'artist': 'Grace Hartigan'}, 
{'movement': 'Cubism', 'artist': 'Pablo Picasso'}, 
{'movement': 'Cubism', 'artist': 'Peter Blume'}, 
{'movement': 'Abstract Expressionism', 'artist': 'Norman Wilfred Lewis'}, 
{'movement': 'Modern Art', 'artist': 'Lucian Freud'} 
] 

artist_by_movement = collections.defaultdict(list) 
for d in artist_movement: 
    artist_by_movement[d['movement']].append(d['artist']) 

あなたは(おそらくもっと興味深い情報がそこにあります)、元の辞書に、より伝統的なインデックスをしたい場合は、

artist_by_movement = collections.defaultdict(list) 
for d in artist_movement: 
    artist_by_movement[d['movement']].append(d) 
+0

魅力的な作品です!本当にありがとう。 – djangonoob

関連する問題