>백엔드 개발 >파이썬 튜토리얼 >중간 키를 덮어쓰지 않고 Python에서 중첩 사전을 업데이트하는 방법은 무엇입니까?

중간 키를 덮어쓰지 않고 Python에서 중첩 사전을 업데이트하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-06 21:54:02412검색

How to Update Nested Dictionaries in Python Without Overwriting Intermediate Keys?

중간 키를 덮어쓰지 않고 중첩 사전 업데이트

중첩 사전으로 작업할 때 다른 레벨에 영향을 주지 않고 특정 키를 업데이트해야 하는 경우가 많습니다. 그러나 Python의 표준 업데이트 방법은 동일한 수준의 모든 키를 덮어쓰므로 이 목표를 달성하기 어렵습니다.

재귀적 접근 방식

재귀적 접근 방식을 사용하면 이 문제를 효과적으로 해결할 수 있습니다. 사전을 재귀적으로 순회함으로써 기존 구조를 유지하면서 적절한 깊이에서 키를 식별하고 업데이트할 수 있습니다.

예를 들어 다음 재귀 함수를 사용하면 levelA를 덮어쓰지 않고 업데이트 내용을 Dictionary1로 업데이트할 수 있습니다.

def update(d, u):
    for k, v in u.items():
        if isinstance(v, dict):
            d[k] = update(d.get(k, {}), v)
        else:
            d[k] = v
    return d

이 함수에서는 v가 사전인지 확인하고 적절한 하위 사전으로 update를 재귀적으로 호출합니다. v가 사전이 아닌 경우 d의 해당 키를 업데이트하면 됩니다. 이렇게 하면 중간 키를 덮어쓰지 않게 됩니다.

사용 예

다음 예를 고려하세요.

dictionary1 = {
    "level1": {
        "level2": {"levelA": 0, "levelB": 1}
    }
}
update = {
    "level1": {
        "level2": {"levelB": 10}
    }
}

updated_dictionary = update(dictionary1, update)
print(updated_dictionary)

# Output:
# {'level1': {'level2': {'levelA': 0, 'levelB': 10}}}

보시다시피 levelA는 업데이트된 사전에 보존됩니다. levelB 값이 포함된 업데이트에도 불구하고. 이는 재귀적 접근 방식의 효율성을 보여줍니다.

위 내용은 중간 키를 덮어쓰지 않고 Python에서 중첩 사전을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.