>백엔드 개발 >파이썬 튜토리얼 >Python에서 중첩된 사전을 어떻게 심층 병합하고 충돌을 처리할 수 있습니까?

Python에서 중첩된 사전을 어떻게 심층 병합하고 충돌을 처리할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-04 22:55:141007검색

How Can I Deep Merge Nested Dictionaries in Python and Handle Conflicts?

Python에서 사전의 심층 병합

복잡한 데이터 구조로 작업할 때 통합된 사전을 만들기 위해 여러 사전을 병합해야 하는 경우가 종종 있습니다. 대표. 한 가지 특별한 문제는 사전에 "심층 병합"이라고 하는 중첩된 사전 구조가 포함되어 있을 때 발생합니다.

이 문제를 해결하기 위해 Python에서 재귀적 접근 방식을 활용할 수 있습니다. 다음 함수는 충돌을 적절하게 처리하면서 효과적으로 사전을 병합합니다.

def merge(a: dict, b: dict, path=[]):
    for key in b:
        if key in a:
            if isinstance(a[key], dict) and isinstance(b[key], dict):
                merge(a[key], b[key], path + [str(key)])
            elif a[key] != b[key]:
                raise Exception('Conflict at ' + '.'.join(path + [str(key)]))
        else:
            a[key] = b[key]
    return a

값이 충돌하는 경우 함수는 예외를 발생시킵니다.

사용법을 설명하려면 다음 예를 고려하세요.

dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}}
dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}}

merge(dict1, dict2)를 사용하면 원하는 결과를 얻을 수 있습니다. 결과:

{1:{'a':{'A'}}, 2:{'b':{'B'},'c':{'C'}}, 3:{'d':{'D'}}}

이 접근 방식을 사용하면 사전 내 중첩이 효율적으로 처리되어 복잡한 데이터 구조를 심층적으로 병합할 수 있습니다.

위 내용은 Python에서 중첩된 사전을 어떻게 심층 병합하고 충돌을 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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