2012-03-11 3 views
0

は、我々が持っているとしましょう取得defaultdict:Pythonは、オリジナルの辞書

from collections import defaultdict 
original_dict = { 'somegroupofelements':{'name':1, 'group':1 ,'results':[1,2,3,4]}, 'somegroupofelements2':{'name':2, 'group': 2 ,'results':[1,2,3,4]}, 'somegroupofelements3':{'name':3, 'group':3 ,'results':[1,2,3,4]} } 

new_dict = defaultdict(list) 

for key, value in original_dict.iteritems(): 
    # i need to organize things grouped for making the right latex tables 
    # and for updating some values... 
    value['key']=key 
    new_dict[value['group']].append(value) 

私はちょうどoriginal_dictのように再編成するために、私の仕事をやった後、私は、そのnew_dictをしたいですか? likeは、new_dictからoriginal_dictを再構築します。

+0

あなたの現在のコードには何が問題なのですか? – Marcin

+1

'original_dict'も辞書ではありません。 –

+0

@Marcin:彼はここに示した操作を逆にしたいと思っています。 –

答えて

4

ですから形式で辞書で終わる:

>>> orig = { x['key']:x for v in d.values() for x in v } 
>>> orig 
{'group1': {'group': 100, 'name': 1, 'key': 'group1'}, 
'group3': {'group': 200, 'name': 3, 'key': 'group3'}, 
'group2': {'group': 100, 'name': 2, 'key': 'group2'}} 

したい場合は、あなたがして削除することができます:dictの内包表記を使用してバック辞書に変換することができ

>>> d = { 100 : [{'name':1, 'group':100, 'key':'group1'}, 
...    {'name':2, 'group':100, 'key':'group2'}], 
...  200 : [{'name':3, 'group':200, 'key':'group3'}] } 

key項目の項目:

>>> for v in orig.values(): del v['key'] 
... 
>>> orig 
{'group1': {'group': 100, 'name': 1}, 
'group3': {'group': 200, 'name': 3}, 
'group2': {'group': 100, 'name': 2}} 
+0

これは機能しています。ありがとう。 –