source

Python에서 Key 오류가 발생함

itover 2022. 12. 31. 16:39
반응형

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

반응형