>백엔드 개발 >파이썬 튜토리얼 >중첩된 사전에서 키-값 쌍을 재귀적으로 반복하고 인쇄하려면 어떻게 해야 합니까?

중첩된 사전에서 키-값 쌍을 재귀적으로 반복하고 인쇄하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 17:56:14697검색

How Can I Recursively Iterate and Print Key-Value Pairs from a Nested Dictionary?

중첩된 사전 값을 통한 반복

이 프로그래밍 시나리오에서 우리의 목표는 잠재적으로 다중 계층 사전 구조를 탐색하고 값이 다음과 같은 키-값 쌍을 인쇄하는 것입니다. 중첩된 사전 자체가 아닙니다. 값이 중첩된 사전인 경우 이를 재귀적으로 탐색하고 키-값 쌍도 인쇄해야 합니다.

이를 달성하려면 간단한 반복 기술로는 충분하지 않을 수 있습니다. 대신 재귀의 힘을 활용할 수 있습니다. 다음은 모든 깊이의 중첩 사전을 효과적으로 처리하기 위해 재귀를 통합하는 수정된 함수입니다.

def myprint(d):
    for k, v in d.items():
        if isinstance(v, dict):
            myprint(v)
        else:
            print("{0} : {1}".format(k, v))

초기 사전으로 myprint를 호출하면 함수가 재귀 루프에 들어갑니다. 각 키-값 쌍을 방문하여 값이 사전인지 확인합니다. 그렇다면 함수는 값 사전을 새 입력으로 사용하여 자신을 호출하여 중첩된 수준으로 효과적으로 드릴다운합니다.

값이 사전이 아닌 경우 함수는 단순히 현재 키-값 쌍을 인쇄합니다. 이 프로세스는 사전의 모든 수준을 탐색할 때까지 계속됩니다.

다음은 샘플 중첩 사전을 사용한 데모입니다.

d = {
    "xml": {
        "config": {
            "portstatus": {"status": "good"},
            "target": "1",
        },
        "port": "11",
    }
}

myprint(d)

이렇게 하면 원하는 출력이 생성됩니다.

xml : {config: {portstatus: {status: good}, target: 1}, port: 11}
config : {portstatus: {status: good}, target: 1}
portstatus : {status: good}
status : good
target : 1
port : 11

보시다시피 이 함수는 사전을 반복적으로 반복하여 중첩되지 않은 모든 값을 인쇄하고 중첩된 값으로 드릴다운합니다. 리프 노드에 도달할 때까지 사전을 실행합니다.

위 내용은 중첩된 사전에서 키-값 쌍을 재귀적으로 반복하고 인쇄하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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