Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengambil Nilai dengan Selamat daripada Kamus Bersarang dalam Python?

Bagaimana untuk Mengambil Nilai dengan Selamat daripada Kamus Bersarang dalam Python?

Patricia Arquette
Lepaskan: 2024-10-18 13:10:03
asal
424 orang telah melayarinya

How to Safely Retrieve Values from Nested Dictionaries in Python?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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:

  • Jika pengendalian ralat eksplisit dan litar pintas dikehendaki, gunakan try-except .
  • Untuk cara yang fleksibel mengendalikan kunci yang hilang, panggilan kaedah chain get().
  • Untuk mendapatkan semula nilai yang lancar dan ciri lanjutan seperti mencipta kunci yang hilang, pertimbangkan kelas Hasher.
  • Untuk antara muka yang boleh digunakan semula dan dipermudahkan, gunakan fungsi safeget helper.

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan