Mendapatkan Nilai Dengan Selamat daripada Kamus Bersarang
Mendapatkan nilai kamus bersarang dengan selamat adalah penting untuk mengelakkan ralat yang tidak dijangka dan memastikan kebolehpercayaan kod. Walaupun terdapat pelbagai kaedah, mari kita terokai beberapa pendekatan biasa:
Menggunakan Blok Cuba-Kecuali:
Seperti yang anda cadangkan, satu pilihan ialah menggunakan cuba-kecuali untuk mengendalikan kekunci yang hilang. Dengan membungkus pengambilan bersarang dalam blok cuba dan mengendalikan pengecualian KeyError, anda boleh mengembalikan nilai lalai atau melaksanakan tingkah laku alternatif dengan anggun. Walau bagaimanapun, kaedah ini membuat litar pintas pada kunci pertama yang hilang dan memerlukan pengendalian pengecualian yang jelas.
Kaedah chaining get():
Python menawarkan kaedah get() untuk kamus, yang membolehkan anda menentukan nilai lalai jika kunci tidak ditemui. Anda boleh merangkaikan berbilang panggilan get() untuk mengendalikan kamus bersarang:
<code class="python">example_dict.get('key1', {}).get('key2')</code>
Pendekatan ini mengelakkan KeyErrors dan mengembalikan Tiada untuk kekunci yang hilang. Walau bagaimanapun, ia boleh membawa kepada satu siri panggilan get() yang berpotensi berlebihan. Selain itu, ia mungkin menimbulkan AttributeError jika example_dict['key1'] bukan dict, yang blok try-except mengendalikan secara berbeza.
Kelas Hasher:
Untuk lebih komprehensif penyelesaian, pertimbangkan kelas Hasher. Subkelas dict ini mengatasi kaedah __missing__() untuk membuat kamus bersarang secara automatik jika kunci yang hilang ditemui. Ia membolehkan perolehan nilai bersarang yang lancar tanpa risiko KeyErrors.
<code class="python">example_dict = Hasher() print(example_dict['key1']['key2'])</code>
Hashers menyediakan sintaks yang intuitif dan konsisten, menganggap kunci yang hilang sebagai Hashers kosong. Walau bagaimanapun, Hasher kosong mungkin tidak sesuai untuk semua situasi.
Fungsi Safeget Helper:
Akhir sekali, anda boleh mencipta fungsi pembantu untuk merangkum perolehan nilai bersarang dengan cara yang boleh digunakan semula dan boleh dibaca :
<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 proses mendapatkan semula bersarang dengan menyediakan satu titik masuk dan mengendalikan kekunci yang hilang secara automatik, mengembalikan Tiada sebagai nilai lalai.
Memilih Pendekatan yang Tepat:
Pendekatan terbaik untuk mendapatkan semula nilai kamus bersarang dengan selamat bergantung pada keperluan dan keutamaan khusus anda:
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Nilai dengan Selamat daripada Kamus Bersarang dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!