Ответы:
KeyErrorОбычно означает , что ключ не существует. Итак, вы уверены, что pathключ существует?
Из официальных документов Python:
исключение KeyError
Возникает, когда ключ набора (словарь) не найден в наборе существующих ключей.
Например:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
Итак, попробуйте распечатать содержимое meta_entryи проверить, pathсуществует или нет.
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
Или вы можете сделать:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
path = meta_entry['path'].strip('/'),является частью вашего кода или движка. Если это часть двигателя, боюсь, ничего не поделаешь.
print meta_entryи проверить, содержит ли он pathили нет.
Я полностью согласен с ключевыми ошибками комментариев. Вы также можете использовать метод словаря get (), чтобы избежать исключений. Это также может быть использовано для указания пути по умолчанию, а не Noneкак показано ниже.
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
Да, это, скорее всего, вызвано несуществующим ключом.
В моей программе я использовал setdefault, чтобы отключить эту ошибку, из соображений эффективности. в зависимости от того, насколько эффективна эта линия
>>>'a' in mydict.keys()
Я новичок в Python тоже. На самом деле я только что узнал это сегодня. Так что прости меня за незнание эффективности.
В Python 3 вы также можете использовать эту функцию,
get(key[, default]) [function doc][1]
Говорят, что это никогда не вызовет ключевой ошибки.
Это означает, что в вашем массиве отсутствует ключ, который вы ищете. Я обрабатываю это с помощью функции, которая либо возвращает значение, если оно существует, либо вместо этого возвращает значение по умолчанию.
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')
Вывод:
1
2
#default
Я получил эту ошибку, когда я анализировал dictс вложенным 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])
Выслеживать:
Traceback (most recent call last):
File "<input>", line 3, in <module>
KeyError: 'K'
Потому что во втором цикле должно быть cats[cat]вместо всего лишь cat(что является просто ключом)
Так:
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])
дает
black
10
white
8
Например, если это число:
ouloulou={
1:US,
2:BR,
3:FR
}
ouloulou[1]()
Это отлично работает, но если вы используете, например:
ouloulou[input("select 1 2 or 3"]()
это не работает, потому что ваш ввод возвращает строку '1'. Так что вам нужно использовать int ()
ouloulou[int(input("select 1 2 or 3"))]()
Давайте сделаем это проще, если вы используете Python 3
mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
print('c key is present')
Если вам нужно еще условие
mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
print('key present')
else:
print('key not found')
Для значения динамического ключа вы также можете обработать блок try-exception
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как правило, означает, чтоkeyне существует. Итак, вы уверены, что «путь» существует?