Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Selamat Mengakses Nilai Kamus Bersarang dalam Python

Cara Selamat Mengakses Nilai Kamus Bersarang dalam Python

Barbara Streisand
Barbara Streisandasal
2024-10-18 13:06:30213semak imbas

How to Safely Access Nested Dictionary Values in Python

Mengakses Selamat Nilai Kamus Bersarang

Dalam Python, mendapatkan semula nilai daripada kamus bersarang kadangkala boleh membawa kepada pengecualian jika kunci tidak wujud. Artikel ini meneroka pelbagai kaedah untuk mengakses nilai ini dengan selamat.

Menggunakan Pengendalian Pengecualian Try-Catch

Pendekatan tradisional melibatkan pembalut operasi akses dalam blok cuba-kecuali. Jika kunci yang hilang ditemui, pengecualian akan dikendalikan dan kod itu meneruskan pelaksanaan:

<code class="python">try:
    example_dict['key1']['key2']
except KeyError:
    pass</code>

Walau bagaimanapun, kaedah ini memerlukan pengulangan semakan kunci untuk setiap peringkat bersarang, yang boleh menjadi menyusahkan.

Merantai panggilan get()

Python menyediakan kaedah get() untuk kamus, yang mengembalikan nilai yang dikaitkan dengan kunci atau Tiada jika kunci tidak wujud. Kaedah ini boleh dirantai beberapa kali untuk mengakses nilai bersarang dengan selamat:

<code class="python">example_dict.get('key1', {}).get('key2')</code>

Pendekatan ini mengembalikan Tiada jika mana-mana kunci perantaraan tiada, tetapi ia masih boleh menimbulkan AttributeError jika nilai yang dikaitkan dengan kunci ialah bukan kamus atau objek seperti dict dengan kaedah get().

Menggunakan Resipi Hasher

Untuk mengelakkan kedua-dua KeyErrors dan AttributeErrors, seseorang boleh melaksanakan Hasher resipi, yang mencipta kelas tersuai yang mewarisi daripada dict dan mengatasi kaedah __missing__():

<code class="python">class Hasher(dict):
    def __missing__(self, key):
        value = self[key] = type(self)()
        return value</code>

Dengan kelas ini, kunci yang hilang akan sentiasa mengembalikan Hasher kosong, membenarkan navigasi selamat melalui struktur bersarang:

<code class="python">example_dict = Hasher()
print(example_dict['key1']['key2'])  # {}</code>

Fungsi Safeget Helper

Akhir sekali, seseorang boleh mencipta fungsi pembantu yang menyembunyikan kerumitan pengambilan nilai selamat:

<code class="python">def safeget(dct, *keys):
    for key in keys:
        try:
            dct = dct[key]
        except KeyError:
            return None
    return dct</code>

Fungsi ini memudahkan sintaks akses, mengurangkan kekacauan kod:

<code class="python">safeget(example_dict, 'key1', 'key2')</code>

Kesimpulannya, walaupun Python tidak menyediakan kaedah terbina dalam untuk mengakses nilai kamus bersarang dengan selamat, teknik yang dibentangkan menawarkan pelbagai pilihan untuk menangani kehilangan kunci dan menghalang pengecualian pengendalian overhed.

Atas ialah kandungan terperinci Cara Selamat Mengakses Nilai 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