키 목록을 통해 중첩된 사전 항목 액세스: 중첩 구조 탐색
사전과 같은 복잡한 데이터 구조에는 탐색 및 조작을 위한 효율적인 방법이 필요한 경우가 많습니다. 중첩된 콘텐츠. 일반적인 과제 중 하나는 제공된 키 목록을 기반으로 중첩된 구조 내의 특정 항목에 액세스하는 것입니다.
기존 접근 방식
이를 해결하는 한 가지 방법은 목록의 각 키를 사용하여 원하는 항목을 찾습니다. 그러나 이 접근 방식은 깊이 중첩된 구조의 경우 점점 장황해지고 오류가 발생하기 쉽습니다.
Reduce를 사용하여 개선된 솔루션
더 우아하고 효율적인 솔루션은 Python의 Reduce를 활용하는 것입니다. () 기능. Reduce()는 지정된 작업을 요소 시퀀스에 반복적으로 적용하여 시퀀스를 단일 값으로 줄입니다. Operator.getitem을 작업으로 활용하면 목록의 각 키를 사용하여 사전을 탐색하여 관련 값을 검색할 수 있습니다.
from functools import reduce # forward compatibility for Python 3 import operator def get_from_dict(dataDict, mapList): return reduce(operator.getitem, mapList, dataDict)
값 설정
사전 내의 값을 수정하는 데에도 동일한 원칙을 적용할 수 있습니다. get_from_dict를 사용하여 상위 사전과 최종 키를 찾으면 새 값을 직접 할당할 수 있습니다.
def set_in_dict(dataDict, mapList, value): get_from_dict(dataDict, mapList[:-1])[mapList[-1]] = value
추가 기능
핵심 기능을 확장하면, 중첩된 구조를 삭제하고 조작하기 위한 추가 기능을 만들 수 있습니다. 예를 들어, 키를 삭제하는 함수:
def del_by_path(root, items): del get_from_path(root, items[:-1])[items[-1]]
전체 예
다음은 전체 코드 데모입니다.
dataDict = { "a": { "r": 1, "s": 2, "t": 3 }, "b": { "u": 1, "v": { "x": 1, "y": 2, "z": 3 }, "w": 3 } } maplist = ["a", "r"] print(get_from_dict(dataDict, maplist)) # Output: 1 maplist = ["b", "v", "y"] print(get_from_dict(dataDict, maplist)) # Output: 2 set_in_dict(dataDict, ["b", "v", "w"], 4) print(dataDict) # Output: {'a': {'r': 1, 's': 2, 't': 3}, 'b': {'u': 1, 'v': {'w': 4, 'x': 1, 'y': 2, 'z': 3}, 'w': 3}}
이 향상된 접근 방식은 키 목록을 사용하여 복잡한 중첩 사전 구조를 탐색하고 수정하는 간결하고 효율적인 방법을 제공하여 유연성과 코드를 제공합니다. 가독성.
위 내용은 Python에서 키 목록을 사용하여 중첩된 사전 항목에 효율적으로 액세스하고 수정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!