No meu programa python, estou recebendo este erro:
KeyError: 'variablename'
Deste código:
path = meta_entry['path'].strip('/'),
Alguém pode explicar por que isso está acontecendo?
python
dictionary
David Liaw
fonte
fonte
Key error
geralmente significakey
que não existe. Então, você tem certeza de que existe um 'caminho'?meta_entry
e verifique se a chave que você deseja existe.Respostas:
A
KeyError
significa em geral a chave não existe. Então, você tem certeza que apath
chave existe?Dos documentos oficiais do python:
exceção KeyError
Por exemplo:
Portanto, tente imprimir o conteúdo
meta_entry
e verifique sepath
existe ou não.Ou você pode fazer:
fonte
path = meta_entry['path'].strip('/'),
faz parte do seu código ou do mecanismo. Se faz parte do motor, receio que nada possa ser feito.print meta_entry
e verificar se ele contémpath
ou não.Concordo plenamente com os principais comentários de erro. Você também pode usar o método get () do dicionário para evitar as exceções. Isso também pode ser usado para fornecer um caminho padrão, e não
None
como mostrado abaixo.fonte
Para dict, basta usar
if key in dict
e não usar
if key in dict.keys()
Vai levar muito tempo
fonte
Sim, é provavelmente causado por chave não existente.
No meu programa, usei o setdefault para silenciar esse erro, por questões de eficiência. dependendo de quão eficiente é essa linha
Eu também sou novo no Python. Na verdade, eu acabei de aprender hoje. Então me perdoe pela ignorância da eficiência.
No Python 3, você também pode usar esta função,
Diz-se que nunca irá gerar um erro de chave.
fonte
Isso significa que sua matriz está faltando a chave que você está procurando. Eu trato disso com uma função que retorna o valor, se existir, ou retorna um valor padrão.
Resultado:
fonte
Eu recebi esse erro quando estava analisando
dict
com aninhadofor
:Traceback:
Porque no segundo loop deve ser
cats[cat]
apenascat
(o que é apenas uma chave)Assim:
Dá
fonte
Por exemplo, se este é um número:
É um trabalho perfeito, mas se você usar, por exemplo:
não funciona, porque sua entrada retorna a string '1'. Então você precisa usar int ()
fonte
Vamos simplificar se você estiver usando o Python 3
Se você precisar de mais condição
Para o valor da chave dinâmica, você também pode manipular o bloco try-exception
fonte