예상 결과 :
x = {'a': {'c': {'d': 3}, 'b': 1}}
예상 결과 :
x = {'a': {'c': {'d': 3}, 'b': 1}}
사용 루프 임시 dictionary_variable :
tmp_dict = x
for key in lst[:-1]:
tmp_dict = tmp_dict[key]
tmp_dict[lst[-1]] = value
print x
공지 사항, 그 마지막 하나를 제외한 모든 키를 통해 루프, 우리는 마지막으로 키가 필요하기 때문에 할당 작업.
이것은 작동하지만 왜'tmp_dict = x'는 x의 다른 사본을 만들지 않는가? – user3351750
파이썬이 객체를 처리하는 방법입니다. dict 객체에 대한 참조 만 복사합니다. 이 예제를 보자 :'a = [], b = a, b.append (1), print (a)'(','대신에 개행 문자로). 어떤 것을 복사하고 싶다면'copy.deepcopy'와 같은 것을 명시 적으로 사용해야합니다. – user38034
필립의 대답은 좋습니다.
하지만 여기에 정확한 답변을 드릴 수 있습니다.
x = {'a':{'b' : 1}}
lst=['a','c']
value = {'d':3}
x[lst[0]][lst[1]] = value
print(x)
>> {'a': {'c': {'d': 3}, 'b': 1}}
내가 예상하는 대답은 키를 하드 코딩하지 않고 목록의 키 값을 사용하는 것입니다. – user3351750
@ user3351750 위의 코드를 편집했습니다. 나는 lst [0]과 list [1]을 사용했다. 그게 그 대답입니까? – MattR
lst는 크기에 관계없이 작동하지 않을 수 있습니다. – user3351750
시도한 사항은 무엇입니까? – Harsha
접근법은'x [lst [0]] [lst [1]]을 사용하여 접근 할 수 있습니다. 그러나 lst는 어떤 크기라도 될 수 있기 때문에 여전히 어떻게 달성 할 것인지 생각하고 있습니다. – user3351750