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?
meta_entrydan pastikan kunci yang Anda inginkan ada.
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?
meta_entrydan pastikan kunci yang Anda inginkan ada.
Jawaban:
SEBUAH KeyError umumnya berarti kuncinya tidak ada. Jadi, apakah Anda yakin pathkuncinya ada?
Dari dokumen python resmi:
pengecualian KeyError
Dibesarkan ketika kunci pemetaan (kamus) tidak ditemukan di set kunci yang ada.
Sebagai contoh:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
Jadi, cobalah untuk mencetak konten meta_entrydan periksa apakah pathada atau tidak.
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
Atau, Anda dapat melakukan:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
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_entrydan periksa apakah mengandung pathatau 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 Noneseperti yang ditunjukkan di bawah ini.
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
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.
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
>>>'a' in mydict.keys()
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,
get(key[, default]) [function doc][1]
Dikatakan bahwa itu tidak akan pernah meningkatkan kesalahan kunci.
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.
def keyCheck(key, arr, default):
if key in arr.keys():
return arr[key]
else:
return default
myarray = {'key1':1, 'key2':2}
print keyCheck('key1', myarray, '#default')
print keyCheck('key2', myarray, '#default')
print keyCheck('key3', myarray, '#default')
Keluaran:
1
2
#default
Saya menerima kesalahan ini ketika saya menguraikan dictdengan bersarang for:
cats = {'Tom': {'color': 'white', 'weight': 8}, 'Klakier': {'color': 'black', 'weight': 10}}
cat_attr = {}
for cat in cats:
for attr in cat:
print(cats[cat][attr])
Melacak kembali:
Traceback (most recent call last):
File "<input>", line 3, in <module>
KeyError: 'K'
Karena di loop kedua seharusnya cats[cat]malah adil cat(apa itu hanya kunci)
Begitu:
cats = {'Tom': {'color': 'white', 'weight': 8}, 'Klakier': {'color': 'black', 'weight': 10}}
cat_attr = {}
for cat in cats:
for attr in cats[cat]:
print(cats[cat][attr])
Memberi
black
10
white
8
Misalnya, jika ini adalah angka:
ouloulou={
1:US,
2:BR,
3:FR
}
ouloulou[1]()
Ini berfungsi dengan baik, tetapi jika Anda menggunakan misalnya:
ouloulou[input("select 1 2 or 3"]()
tidak berfungsi, karena input Anda mengembalikan string '1'. Jadi, Anda perlu menggunakan int ()
ouloulou[int(input("select 1 2 or 3"))]()
Biarkan kami membuatnya sederhana jika Anda menggunakan Python 3
mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
print('c key is present')
Jika Anda membutuhkan kondisi lain
mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
print('key present')
else:
print('key not found')
Untuk nilai kunci dinamis, Anda juga dapat menangani melalui blok coba-pengecualian
mydict = {'a':'apple','b':'boy','c':'cat'}
try:
print(mydict['c'])
except KeyError:
print('key value not found')mydict = {'a':'apple','b':'boy','c':'cat'}
Key errorumumnya berartikeytidak ada. Jadi, apakah Anda yakin 'jalan' ada.?