Dalam program python saya, saya mendapatkan kesalahan ini:
KeyError: 'variablename'
Dari kode ini:
path = meta_entry['path'].strip('/'),
Adakah yang bisa menjelaskan mengapa ini terjadi?
python
dictionary
David Liaw
sumber
sumber
Key error
umumnya berartikey
tidak ada. Jadi, apakah Anda yakin 'jalan' ada.?meta_entry
dan pastikan kunci yang Anda inginkan ada.Jawaban:
SEBUAH
KeyError
umumnya berarti kuncinya tidak ada. Jadi, apakah Anda yakinpath
kuncinya ada?Dari dokumen python resmi:
pengecualian KeyError
Sebagai contoh:
Jadi, cobalah untuk mencetak konten
meta_entry
dan periksa apakahpath
ada atau tidak.Atau, Anda dapat melakukan:
sumber
path = meta_entry['path'].strip('/'),
itu bagian dari kode Anda atau mesin. Jika itu bagian dari mesin, saya khawatir tidak ada yang bisa dilakukan.print meta_entry
dan periksa apakah mengandungpath
atau tidak.Saya sepenuhnya setuju dengan komentar kunci kesalahan. Anda juga bisa menggunakan metode get () kamus untuk menghindari pengecualian. Ini juga dapat digunakan untuk memberikan jalur default daripada
None
seperti yang ditunjukkan di bawah ini.sumber
Untuk dict, cukup gunakan
if key in dict
dan jangan gunakan pencarian di daftar kunci
if key in dict.keys()
Yang terakhir akan lebih memakan waktu.
sumber
Ya, kemungkinan besar disebabkan oleh kunci yang tidak ada.
Dalam program saya, saya menggunakan setdefault untuk membisukan kesalahan ini, untuk masalah efisiensi. tergantung pada seberapa efisien garis ini
Saya juga baru di Python. Sebenarnya saya baru mempelajarinya hari ini. Jadi maafkan saya atas ketidaktahuan efisiensi.
Di Python 3, Anda juga dapat menggunakan fungsi ini,
Dikatakan bahwa itu tidak akan pernah meningkatkan kesalahan kunci.
sumber
Ini berarti array Anda tidak memiliki kunci yang Anda cari. Saya menangani ini dengan fungsi yang mengembalikan nilai jika ada atau mengembalikan nilai default sebagai gantinya.
Keluaran:
sumber
Saya menerima kesalahan ini ketika saya menguraikan
dict
dengan bersarangfor
:Melacak kembali:
Karena di loop kedua seharusnya
cats[cat]
malah adilcat
(apa itu hanya kunci)Begitu:
Memberi
sumber
Misalnya, jika ini adalah angka:
Ini berfungsi dengan baik, tetapi jika Anda menggunakan misalnya:
tidak berfungsi, karena input Anda mengembalikan string '1'. Jadi, Anda perlu menggunakan int ()
sumber
Biarkan kami membuatnya sederhana jika Anda menggunakan Python 3
Jika Anda membutuhkan kondisi lain
Untuk nilai kunci dinamis, Anda juga dapat menangani melalui blok coba-pengecualian
sumber