2017-03-13 293 views
-1

我有一本字典为:的Python(逗号分隔值)

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与逗号分隔值和其他与其余。我试图匹配并更新它。但不工作。 – 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