Python programımda bu hatayı alıyorum:
KeyError: 'variablename'
Bu koddan:
path = meta_entry['path'].strip('/'),
Herkes bunun neden olduğunu açıklayabilir mi?
meta_entry
istediğiniz anahtarın var olduğundan emin olun.
Python programımda bu hatayı alıyorum:
KeyError: 'variablename'
Bu koddan:
path = meta_entry['path'].strip('/'),
Herkes bunun neden olduğunu açıklayabilir mi?
meta_entry
istediğiniz anahtarın var olduğundan emin olun.
Yanıtlar:
A KeyError
genellikle anahtarın mevcut olmadığı anlamına gelir. Peki, path
anahtarın var olduğundan emin misiniz ?
Resmi python belgelerinden:
istisna KeyError
Mevcut anahtarlar kümesinde bir eşleme (sözlük) anahtarı bulunmadığında yükseltilir.
Örneğin:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
Bu nedenle, içeriğini yazdırmaya çalışın meta_entry
ve path
var olup olmadığını kontrol edin .
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
Veya şunları yapabilirsiniz:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
path = meta_entry['path'].strip('/'),
kod, kodunuzun veya motorunuzun bir parçasıdır. Motorun bir parçasıysa korkarım hiçbir şey yapılamaz.
print meta_entry
ve içerip içermediğini kontrol etmek path
.
Anahtar hata yorumlarına tamamen katılıyorum. Ayrıca kullanabilirsiniz Sözlüğün olsun () durumları önlemek için de bir yöntem. Bu, None
aşağıda gösterildiği gibi değil, varsayılan bir yol vermek için de kullanılabilir .
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
Evet, büyük olasılıkla mevcut olmayan anahtardan kaynaklanır.
Programımda, verimlilik kaygısı için bu hatayı susturmak için setdefault kullandım. bu hattın ne kadar verimli olduğuna bağlı olarak
>>>'a' in mydict.keys()
Ben de Python'da yeniyim. Aslında bugün öğrendim. Verimliliğin bilgisizliğinden beni affedin.
Python 3'te bu işlevi de kullanabilirsiniz,
get(key[, default]) [function doc][1]
Asla önemli bir hata yaratmayacağı söyleniyor.
Bu, dizinizde aradığınız anahtarı eksik olduğu anlamına gelir. Bu, varsa değeri döndüren veya bunun yerine varsayılan bir değer döndüren bir işlevle işlemek.
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')
Çıktı:
1
2
#default
Ben dict
iç içe ile ayrıştırırken bu hatayı aldım 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])
Geri iz:
Traceback (most recent call last):
File "<input>", line 3, in <module>
KeyError: 'K'
Çünkü ikinci döngüde cats[cat]
sadece olmalı cat
(sadece bir anahtar nedir)
Yani:
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])
verir
black
10
white
8
Örneğin, bu bir sayı ise:
ouloulou={
1:US,
2:BR,
3:FR
}
ouloulou[1]()
Mükemmel çalışıyor, ancak örneğin:
ouloulou[input("select 1 2 or 3"]()
işe yaramaz, çünkü giriş dönüş dizeniz '1'. Yani int ()
ouloulou[int(input("select 1 2 or 3"))]()
Python 3 kullanıyorsanız bunu basitleştirelim
mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
print('c key is present')
Başka bir şarta ihtiyacınız varsa
mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
print('key present')
else:
print('key not found')
Dinamik anahtar değeri için try-exception bloğunu da kullanabilirsiniz
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 error
genelliklekey
var olmadığı anlamına gelir . Peki, 'yol'un var olduğundan emin misin?