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!