Python에서 Key 오류가 발생함
python 프로그램에서 다음 오류가 발생합니다.
KeyError: 'variablename'
이 코드부터:
path = meta_entry['path'].strip('/'),
왜 이런 일이 일어나는지 설명해주실 분 있나요?
A는 일반적으로 키가 존재하지 않음을 의미합니다.그래서, 당신은 확신하나요?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
키 오류 코멘트에 전적으로 동의합니다.또한 사전의 get() 메서드를 사용하여 예외를 피할 수도 있습니다.이것은, 디폴트 패스를 지정하기 위해서도 사용할 수 있습니다.None아래 그림과 같이
>>> d = {"a":1, "b":2}
>>> x = d.get("A",None)
>>> print x
None
dict에는 그냥 사용하세요.
if key in dict
키 목록에서 검색 사용 안 함
if key in dict.keys()
후자는 시간이 더 많이 소요됩니다.
네, 키가 존재하지 않는 것이 원인일 가능성이 높습니다.
프로그램에서는 이 에러를 뮤트하기 위해 setdefault를 사용했습니다.이 회선의 효율성에 따라 다릅니다.
>>>'a' in mydict.keys()
저도 Python은 처음입니다.사실 오늘 막 배웠어요.그러니 능률에 대한 무지함을 용서해 주세요.
Python 3 에서는, 이 기능도 사용할 수 있습니다.
get(key[, default]) [function doc][1]
절대 키 에러를 일으키지 않는다고 한다.
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'}
구문 분석 중에 이 오류가 발생했습니다.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
즉, 어레이에 찾고 있는 키가 없습니다.값이 있는 경우 값을 반환하거나 기본값을 반환하는 함수로 처리합니다.
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
예를 들어, 이것이 숫자일 경우:
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"))]()
언급URL : https://stackoverflow.com/questions/10116518/im-getting-key-error-in-python
'source' 카테고리의 다른 글
| console.log(result)는 [Object]를 반환합니다.result.name에 접속하려면 어떻게 해야 하나요? (0) | 2023.01.05 |
|---|---|
| MariaDB Galera 클러스터: 두 번째 노드가 표시되지 않음 (0) | 2022.12.31 |
| Java에서 폴더 삭제 (0) | 2022.12.31 |
| iOS/Android 운영 체제 검색 (0) | 2022.12.31 |
| 오류 1396(HY000):'user'@'localhost'에 대한 DROP USER 작업이 실패했습니다. (0) | 2022.12.31 |