2016-09-16 2 views
1

Supposons que j'ai un dict imbriqué comme:insert valeur paire de clés dans dict imbriquée sans écraser après delimiter de la clé qui produisent double clé

D={'Germany': {'1972-05-23': 'test1', '1969-12-27': 'test2'}, 
    'Morocco|Germany': {'1978-01-14':'test3'}} 

Je veux obtenir une nouvelle dict comme:

{'Germany': {'1972-05-23': 'test1', '1969-12-27': 'test2', '1978-01-14':'test3'} 
'Morocco': {'1978-01-14':'test3'}} 

qui signifie que je dois gérer la clé peut-être en double après la str.split(key), et voici mon code:

D={'Germany': {'1972-05-23': 'test1', '1969-12-27': 'test2'}, 
    'Morocco|Germany': {'1978-01-14':'test3'}} 

new_dict={} 
for item in D: 
    for index in str.split(item,'|'): 
     new_dict[index]=D[item] 
print new_dict 

mais la paire clé-valeur générée après l'opération de fractionnement qui écrasent celles d'origine qui en résultent:

{'Morocco': {'1978-01-14': 'test3'}, 'Germany': {'1978-01-14': 'test3'}} 

Je me demande comment je peux modifier le mon code pour obtenir un dict satisfaisant pour un traitement ultérieur ou une meilleure solution pour cette exigence?

PS: Ma version Python est 2.7.12 avec Anaconda 4.0.0 via IDE PyCharm

Toute aide sera appréciée, merci

Répondre

2

vous pouvez utiliser:

if not index in new_dict: new_dict[index] = {} 
new_dict[index].update(D[item]) 
+0

Merci, ça marche pour moi. – LancelotHolmes