> 백엔드 개발 > 파이썬 튜토리얼 > 특정 키-값 쌍을 유지하면서 중첩된 사전을 업데이트하는 방법은 무엇입니까?

특정 키-값 쌍을 유지하면서 중첩된 사전을 업데이트하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-06 17:30:03
원래의
309명이 탐색했습니다.

How to Update a Nested Dictionary While Preserving Specific Key-Value Pairs?

깊이가 다양한 중첩 사전 업데이트

중첩 사전(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿