2017-11-29 7 views
0
dictOne = {'a':1, 'b':2} 
dictTwo = {'aa':dictOne['a'], 'bb':dictOne['b']} 

print(dictTwo['aa'] 
# returns 1 

을 변경 등록하지 않습니다.두 번째 DICT 다스 려 먼저

print(dictTwo['aa']) 
# returns 1 

여기 무슨 일입니까? 나는 이것이 어떻게 든 dict의 부적절한 사용이라고 확신하지만, 즉각적으로 이것을 해결할 필요가있다. 감사. 여기

답변

0

당신은이 문제에 대한 자세한 내용을 모른 채 '는이'dictOne 내부 코드

dictTwo = {'aa':dictOne['a']} 

의 아래 부분에 당신은 python FAQ on pass by assignment

를 읽고 몇 가지 값을 찾을 수 있습니다 키의 값을 추출하고 , 정확히 어떻게 해결할 수 있을지 말하기는 어렵습니다. 어쩌면 당신이 찾고있는 것은 multi key dict

+0

링크 주셔서 감사하지만

dictTwo = {'aa' : 'a', 'bb' : 'b'} dictOne[dictTwo['aa']] 

: 당신은 서로 다른 키 집합 사이의 매핑을 만들어야하는 경우, 뭔가를 할 수있는 옵션이있다. 나는이 문제를 더 깊이 살펴볼 것이다. – micahel

0

라인 : 둘다 불변 값 (정수)을 반환

dictTwo = {'aa':1, 'bb':2} 

dictOne['a'] 이래로 dictOne['b'], 이들은 복사에 의해 전달, 그리고 참조로되어

dictTwo = {'aa':dictOne['a'], 'bb':dictOne['b']} 

는 동일하다. How do I pass a variable by reference?

dictTwo = dictOne을 수행했으면 dictOne을 업데이트해도 동일한 키 값을 갖지만 dictTwo을 업데이트합니다.