2017-03-13 21 views
-1

私は辞書を持っている:パイソン(カンマ区切り値)

dict_1 = {'A' : {'C10' : 5}, 
    'A,B' : {'C11' : 5, 'C12' : 4}, 
    'A,B,C' : {'C10' : 3, 'C12' : 5}, 
    'C,D' : {'C11' : 4} 
} 

と出力をしたいよう:

result = {'A' : [{'C10' : 5}, {'C11' : 5, 'C12' : 4}, {'C10' : 3, 'C12' : 5}], 
      'B' : [{'C11' : 5, 'C12' : 4}, {'C10' : 3, 'C12' : 5}], 
      'C' : [{'C10' : 3, 'C12' : 5}, {'C11' : 4}], 
      'D' : [{'C11' : 4}] 
} 
+0

をあなたが持っているものこれまでに試しましたか? –

+0

私はいろいろ試しました。しかし、それのどれも働いていません。 dict_1を2つの辞書に分割しました。 1はカンマ区切りの値で、もう1つは残りの区切りとなります。それに合わせて更新しようとしました。しかし、働いていない。 – user7276674

+0

@deceze、なぜこれを閉じましたか?私はちょうど答えを入力していたとあなたは中流で私をシャットダウンします。 –

答えて

1
from collections import defaultdict 
res = defaultdict(list) 
for k, v in dict_1.items(): 
    for x in k.split(','): 
     res[x].append(v) 

result = dict(res) 
print(result) 

あなたを与える:

{'A': [{'C10': 5}, {'C11': 5, 'C12': 4}, {'C10': 3, 'C12': 5}], 
'B': [{'C11': 5, 'C12': 4}, {'C10': 3, 'C12': 5}], 
'C': [{'C10': 3, 'C12': 5}, {'C11': 4}], 
'D': [{'C11': 4}]} 
+0

あなたは答えを入れることができましたが、欺瞞がそれを閉じたとき私はブロックされましたか? –

+0

@TomZych私はただ運が良かった:https://meta.stackoverflow.com/questions/252711/this-answer-was-posted-after-the-question-was-closed-how-is-that-possible – poke