Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Mencetak Semua Nilai secara Rekursif daripada Kamus Bersarang dalam Python?

Bagaimana Mencetak Semua Nilai secara Rekursif daripada Kamus Bersarang dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 05:31:11669semak imbas

How to Recursively Print All Values from a Nested Dictionary in Python?

Gelung Rekursif melalui Nilai Kamus Bersarang

Pernyataan Masalah

Memandangkan kamus bersarang, tugasnya adalah untuk merentasi semua pasangan nilai utamanya, mencetak nilai yang bukan kamus bersarang. Untuk kamus bersarang, traversal harus diteruskan secara rekursif untuk mencetak pasangan nilai kunci mereka.

Penyelesaian

Menggunakan rekursi, fungsi boleh ditakrifkan untuk melaksanakan tugas ini:

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

Fungsi ini menerima kamus sebagai hujah dan berulang melalui pasangan nilai kuncinya. Jika nilai bukan kamus bersarang, ia mencetak pasangan nilai kunci. Jika nilai ialah kamus, ia secara rekursif memanggil fungsi myprint dengan kamus baharu ini.

Contoh

Pertimbangkan kamus berikut:

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

Memanggil fungsi myprint akan output:

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

Penyelesaian ini menyediakan mekanisme rekursif untuk menggelungkan semua nilai kamus bersarang dan mencetaknya sebagai dikehendaki.

Atas ialah kandungan terperinci Bagaimana Mencetak Semua Nilai secara Rekursif daripada Kamus Bersarang dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn