답변:
A는 KeyError
일반적으로 키가 존재하지 않는 것을 의미한다. path
열쇠가 있는지 확실 합니까?
공식 파이썬 문서에서 :
예외 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 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
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
존재하지 않는 것을 의미 합니다. 그래서 '경로'가 존재합니까?