2016-08-09 7 views
-3

다음과 같이 두 개의 사전이 있습니다.클럽 사전은 어떻게?

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?. 솔루션 아래 내가 필요한 것과 다릅니다.

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

는 출력을 제공합니다 : 예를 들어, D2의 내용으로 업데이트 한 후, 기본 빈 사전을 만드는 -

{'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- 단일 표현식 사전) – DeepSpace

+0

중복 된 키의 경우 어떻게됩니까? – DeepSpace

+0

@DeepSpace : 내가 최근에 게시 한 출력과 시도한 ID를 정확히 볼 수 있습니까? – User

답변

1

당신은 다른 반복 한 후, 첫 번째 사전의 사본을 취할 수 의 :

{'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를 참조하십시오. –

관련 문제