2016-08-09 7 views
-3

私は以下の2つの辞書を持っています。クラブ辞書の使い方は?

d1 = { 
     "user1":{"key1":"val1","key2":"val2"}, 
     "user2":{"key3":"val3","key4":"val4"} 
    } 

d2 = { "admin":{ 
     "user1":{"key5":"val5","key6":"val6"}, 
     "user3":{"key7":"val7","key8":"val8"} 
       } 
    } 

最終辞書には、次のようになります。

d3 = { 
       "user1":{"key1":"val1","key2":"val2","key5":"val5","key6":"val6"}, 
       "user2":{"key3":"val3","key4":"val4"}, 
       "user3":{"key7":"val7","key8":"val8"} 
       } 

マージ概念は、ここでは適用されません。ここで私を助けてくれますか?

私はHow to merge two Python dictionaries in a single expression?のソリューションを試しました。ソリューションの下に私が必要としたものとは異なります。

{'admin': {'user3': {'key8': 'val8', 'key7': 'val7'}, 'user1': {'key6': 'val6', 
'key5': 'val5'}}, 'user2': {'key3': 'val3', 'key4': 'val4'}, 'user1': {'key2': ' 
val2', 'key1': 'val1'}} 
+0

可能な複製(http://stackoverflow.com/questions/38987/how-can-i-merge-two-python- [どのように私は、単一の式で2つのPythonの辞書をマージすることができますか?]単一表現の辞書) – DeepSpace

+0

重複したキーの場合はどうなりますか? – DeepSpace

+0

@DeepSpace:私が試した最近投稿された出力と、正確に必要なIDを調べることができますか? – User

答えて

1

あなたが他を反復、その後、最初の辞書のコピーを取ることができます - 例えば、その後、D2の内容とそれを更新し、デフォルトの空の辞書を作成:

d3 = d1.copy() 
for k, v in d2['admin'].iteritems(): 
    d3.setdefault(k, {}).update(v) 

はあなたの出力が得られますの:の

{'user1': {'key1': 'val1', 'key2': 'val2', 'key5': 'val5', 'key6': 'val6'}, 
'user2': {'key3': 'val3', 'key4': 'val4'}, 
'user3': {'key7': 'val7', 'key8': 'val8'}} 
+0

解決に感謝します。 setdefaultはここで何をしますか? – User

+1

@ユーザhttps://docs.python.org/2/library/stdtypes.html#dict.setdefault –