깊이가 다양한 중첩 사전 업데이트
중첩 사전(dictionary1)을 다른 중첩 사전(업데이트)의 콘텐츠로 원활하게 업데이트하려면 특정 키-값 쌍을 보존하면서 다양한 사전 깊이를 고려하는 재귀적 솔루션을 사용해야 합니다.
다음 예시 시나리오를 고려하세요.
업데이트 전:
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } }
표준 업데이트 방법을 사용하면 Dictionary1의 기존 "level2" 값을 덮어쓰게 되어 다음과 같은 결과가 발생합니다.
dictionary1.update(update) print(dictionary1)
{ "level1": { "level2": {"levelB": 10} # "levelA" is lost } }
재귀 솔루션:
이 보존 요구 사항을 해결하기 위해 다음 Python 코드는 재귀 솔루션을 제공합니다.
import copy def update_dictionary(d, u): for k, v in u.items(): if isinstance(v, dict): # If the value is a dictionary, recursively update d[k] = update_dictionary(d.get(k, {}), v) else: # If the value is not a dictionary, simply update d[k] = copy.deepcopy(v) return d
이 솔루션은 원본 사전1의 전체 복사본을 생성하여 내부 업데이트를 방지합니다. 그런 다음 업데이트 사전(u)을 반복하고 d의 해당 값을 재귀적으로 업데이트합니다. 값이 사전이면 재귀를 계속합니다. 그렇지 않으면 값을 직접 업데이트합니다.
사용법:
이 솔루션을 이전 예에 적용:
result = update_dictionary(dictionary1, update) print(result)
결과:
{ "level1": { "level2": {"levelA": 0, "levelB": 10} # "levelA" preserved } }
이 솔루션은 원래 사전의 "levelA" 값을 유지하면서 "levelB" 값을 효과적으로 업데이트합니다. 다양한 깊이의 중첩 사전을 처리하여 업데이트 프로세스 중에 특정 키-값 쌍이 보존되도록 합니다.
위 내용은 특정 키-값 쌍을 유지하면서 중첩된 사전을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!