압축된 키를 사용하여 중첩 사전 평면화
아래와 같은 계층적 사전 구조를 고려하세요.
{'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]}
To 이것을 유선형 구조로 평면화 like:
{'a': 1, 'c_a': 2, 'c_b_x': 5, 'c_b_y': 10, 'd': [1, 2, 3]}
중첩 목록과 그 안에 있는 중첩 사전을 모두 평면화하는 작업이 포함됩니다.
접근 방식
이 절차는 목록을 평면화하는 단계와 유사합니다. 중첩 목록. 그러나 사전을 반복하고, 구분 기호를 사용하여 평면화된 구조에 대한 고유 키 이름을 생성하고, 새 사전을 조합하려면 추가 처리가 필요합니다.
구현
사용 collections.abc.MutableMapping 사전 유형 확인을 위해 다음 코드 조각은 재귀를 활용하여 중첩 구조를 탐색하고 압축된 표현 구성:
from collections.abc import MutableMapping def flatten(dictionary, parent_key='', separator='_'): items = [] for key, value in dictionary.items(): new_key = parent_key + separator + key if parent_key else key if isinstance(value, MutableMapping): items.extend(flatten(value, new_key, separator=separator).items()) else: items.append((new_key, value)) return dict(items)
주어진 예제 사전에 이 방법을 적용하면 원하는 평면화된 표현이 생성됩니다.
>>> flatten({'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]}) {'a': 1, 'c_a': 2, 'c_b_x': 5, 'd': [1, 2, 3], 'c_b_y': 10}
이 기술은 키 이름을 압축하여 중첩된 사전을 효율적으로 평면화합니다. 컴팩트하고 쉽게 이동할 수 있는 구조를 제공하는 분리기입니다.
위 내용은 Python에서 압축된 키를 사용하여 중첩 사전을 평면화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!