In my python program I am getting this error:
KeyError: 'variablename'
From this code:
path = meta_entry['path'].strip('/'),
Can anyone please explain why this is happening?
In my python program I am getting this error:
KeyError: 'variablename'
From this code:
path = meta_entry['path'].strip('/'),
Can anyone please explain why this is happening?
A KeyError
generally means the key doesn't exist. So, are you sure the path
key exists?
From the official python docs:
exception KeyError
Raised when a mapping (dictionary) key is not found in the set of existing keys.
For example:
>>> mydict = {'a':'1','b':'2'}
>>> mydict['a']
'1'
>>> mydict['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>>
So, try to print the content of meta_entry
and check whether path
exists or not.
>>> mydict = {'a':'1','b':'2'}
>>> print mydict
{'a': '1', 'b': '2'}
Or, you can do:
>>> 'a' in mydict
True
>>> 'c' in mydict
False
path = meta_entry['path'].strip('/'),
is it part of your code or the engine. If it is part of the engine i am afraid nothing can't be done. –
Loyola print meta_entry
and check if it contains path
or not. –
Loyola path = meta_entry['path'].strip('/'),
is part of the code you wrote. So, it means meta_entry
is also the part of your code. Now you are expecting a defined output when running your code. So, just print
the contents of meta_entry
by writing print meta_entry
in your python code. and execute it to see the result. –
Loyola outside the browser
. –
Loyola dropbox python api
. I believe you can achieve you task by using that. Although I am not sure. –
Loyola I fully agree with the Key error comments. You could also use the dictionary's get() method as well to avoid the exceptions. This could also be used to give a default path rather than None
as shown below.
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
For dict, just use
if key in dict
and don't use searching in key list
if key in dict.keys()
The latter will be more time-consuming.
Yes, it is most likely caused by non-exsistent key.
In my program, I used setdefault to mute this error, for efficiency concern. depending on how efficient is this line
>>>'a' in mydict.keys()
I am new to Python too. In fact I have just learned it today. So forgive me on the ignorance of efficiency.
In Python 3, you can also use this function,
get(key[, default]) [function doc][1]
It is said that it will never raise a key error.
Let us make it simple if you're using Python 3
mydict = {'a':'apple','b':'boy','c':'cat'}
check = 'c' in mydict
if check:
print('c key is present')
If you need else condition
mydict = {'a':'apple','b':'boy','c':'cat'}
if 'c' in mydict:
print('key present')
else:
print('key not found')
For the dynamic key value, you can also handle through try-exception block
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'}
I received this error when I was parsing dict
with nested 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:
Traceback (most recent call last):
File "<input>", line 3, in <module>
KeyError: 'K'
Because in second loop should be cats[cat]
instead just cat
(what is just a key)
So:
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])
Gives
black
10
white
8
This means your dictionary is missing the key you're looking for. I handle this with a function which either returns the value if it exists or it returns a default value instead.
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')
Output:
1
2
#default
For example, if this is a number :
ouloulou={
1:US,
2:BR,
3:FR
}
ouloulou[1]()
It's work perfectly, but if you use for example :
ouloulou[input("select 1 2 or 3"]()
it's doesn't work, because your input return string '1'. So you need to use int()
ouloulou[int(input("select 1 2 or 3"))]()
© 2022 - 2024 — McMap. All rights reserved.
Key error
generally means thekey
doesn't exist. So,are you sure 'path' exist.? – Loyolameta_entry
and ensure the key you want exists. – Biscaypath = meta_entry.get('path', None)
. This is useful ifpath
is not guaranteed to be present. . See @Adam's answer below and KeyError. – Ocotillo