Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python KeyError:초심자를 위한 안내서

존재하지 않는 사전의 항목에 액세스하려고 하면 Python KeyError가 발생합니다. 존재하는 사전에서 항목을 선택하도록 프로그램을 수정하여 이 오류를 수정할 수 있습니다. 또는 키가 있는지 먼저 확인하여 이 오류를 처리할 수 있습니다.

Python KeyError 처리 방법

방금 KeyError를 맞이하셨습니까? 걱정하지 마세요! KeyError가 발생하면 존재하지 않는 사전 내부의 키에 액세스하려고 함을 의미합니다. 방법을 알면 이 오류를 처리하고 수정하는 것이 쉽습니다.

KeyErrors는 try…except 블록을 사용하거나 "in" 키워드를 사용하거나 인덱싱을 사용하여 미리 키를 확인하여 처리할 수 있습니다.

이 가이드에서는 Python KeyError가 무엇이고 왜 발생하는지에 대해 이야기할 것입니다. 앞으로 KeyErrors를 해결하는 방법을 알 수 있도록 오류의 예와 수정 방법을 살펴보겠습니다.

시작하겠습니다!

파이썬 키 오류란 무엇입니까?

인덱싱 구문을 사용하여 존재하지 않는 사전의 항목에 액세스하려고 하면 Python KeyError가 발생합니다. 이 오류는 Python이 사전에 없는 항목에 대한 값을 반환할 수 없기 때문에 발생합니다.

Python 사전은 중괄호({}) 안에 저장되는 키-값 쌍의 집합입니다.

raspberry_pi = {
"name": "Raspberry Pi 4",
"price": 35.00,
"RAM": "4GB"
}

키는 "이름", "가격" 및 "RAM"입니다. 키는 사전에서 콜론 앞에 나타납니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

사전에서 USB 포트 수를 검색하려고 하면 어떻게 되는지 봅시다.

print(raspberry_pi["usb_ports"])

코드 반환:

KeyError: 'usb_ports'

이 오류는 지정한 키가 존재하지 않음을 알려줍니다. 이 경우 누락된 키는 "usb_ports"입니다.

KeyError Python:솔루션

Python 사전 KeyError를 처리하려면 다음을 수행할 수 있습니다.

  • 인덱싱을 사용하여 미리 키 확인
  • "in" 키워드를 사용하여 키 확인
  • try…except 블록을 사용합니다.

가장 적합한 KeyError를 처리하는 솔루션은 사용 사례에 따라 다릅니다.

사전 get() 메소드 사용

Python 사전 get() 메서드는 사전의 값을 반환합니다. get() 메서드를 사용하여 기본값을 지정할 수 있습니다. 지정한 키 이름에 값이 없는 경우 이 기본값이 반환됩니다.

다음 코드를 고려하십시오.

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

print("The {} for this computer is {}.".format(get_key, raspberry_pi.get(get_key, "not available"))

Python 인터프리터를 사용하여 코드를 실행하고 어떤 일이 일어나는지 봅시다:

What information would you like to retrieve? ALU
The ALU for this computer is not available.

우리의 코드는 사전에서 "ALU"를 검색하기 위해 사전 get() 메서드를 사용합니다. 이 키 이름과 일치하는 값이 없습니다. get() 메서드는 "사용할 수 없음"으로 지정된 기본값을 반환합니다.

인덱싱을 사용하여 사전에 키 확인

KeyError가 발생하지 않도록 인덱싱을 사용하여 키의 존재를 확인할 수 있습니다. 키가 사전에 있으면 해당 키를 사용할 수 있습니다. 그렇지 않으면 해당 키에 의존하지 않는 다른 작업을 수행하도록 프로그램에 지시할 수 있습니다.

Python의 "raspberry_pi" 사전에 있는 키에 액세스하는 프로그램을 작성해 보겠습니다. 인덱싱을 사용하여 키가 사전에 있는지 확인합니다.

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

if raspberry_pi[get_key]:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
else:
	print("This information is not available.")

키가 존재하는지 확인하기 위해 Python "if" 문을 사용했습니다. "raspberry_pi[get_key]"는 키가 있는 경우에만 값을 반환합니다. 즉, 키가 존재하면 "if" 문이 실행됩니다. 키가 없으면 "else" 문이 실행됩니다.

Raspberry Pi의 RAM을 알아보겠습니다.

What information would you like to retrieve (name, price, RAM)? RAM
The RAM for this computer is 4GB.

이제 컴퓨터에 몇 개의 USB 포트가 있는지 알아보겠습니다.

What information would you like to retrieve (name, price, RAM)? USB
This information is not available.

우리 코드는 KeyError를 발생시키지 않습니다! 키를 사용하기 전에 먼저 키가 존재하는지 확인했기 때문입니다. "else" 문 내에서 raspberry_pi[get_key]를 사용한 경우 코드에서 KeyError를 반환합니다.

차단을 제외하고 시도 사용

Python try...except 블록은 한 줄의 코드를 실행하려고 시도합니다. 해당 코드 행을 실행할 수 없는 경우 귀하가 명시한 예외에 따라 코드에서 사용자 정의 오류가 발생합니다.

try...except 블록을 사용하여 오류의 존재를 확인하고 예기치 않은 KeyError가 Python 프로그램을 돕는 것을 막을 수 있습니다.

try...except 블록을 사용하여 이전 컴퓨터 예제에 대한 사용자 지정 오류를 정의해 보겠습니다.

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

try:
	print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
except KeyError:
	print("This information is not available.")

우리는 try...except 블록을 사용하여 Raspberry Pi 컴퓨터에 대한 특정 정보를 콘솔에 출력하려고 시도합니다. 코드가 "try" 블록의 아무 곳에서나 KeyError를 발생시키면 코드는 "except" 블록의 내용을 실행합니다.

즉, KeyError가 발생할 때마다 "이 정보를 사용할 수 없습니다"라는 메시지가 콘솔에 인쇄됩니다. 컴퓨터 이름에 대해 알아보겠습니다.

What information would you like to retrieve (name, price, RAM)? name
The name for this computer is Raspberry Pi 4.

이제 컴퓨터의 USB 포트 가용성에 대해 알아보겠습니다.

What information would you like to retrieve (name, price, RAM)? USB
This information is not available.

코드는 "try" 블록 내에서 KeyError를 발생시킵니다. 이로 인해 코드가 "제외" 코드 블록을 실행합니다.

in을 사용하여 사전에 키 확인

"in" 키워드는 파이썬의 멤버쉽 연산자 중 하나입니다. 항목이 값 목록에 있는지 확인합니다. "in" 키워드를 사용하여 키가 사전 내부에 있는지 확인할 수 있습니다.

이 프로그램은 키 값을 콘솔에 출력하기 전에 키가 있는지 확인합니다.

raspberry_pi = { "name": "Raspberry Pi 4", "price": 35.00, "RAM": "4GB" }

get_key = input("What information would you like to retrieve (name, price, RAM)? ")

if get_key in raspberry_pi:
print("The {} for this computer is {}.".format(get_key, raspberry_pi[get_key]))
else:
	print("This information is not available.")

이 코드는 "get_key" 값이 "raspberry_pi" 사전 내부의 키인지 확인합니다. 키가 있는 경우 "if" 문이 실행됩니다. 그렇지 않으면 "else" 문이 실행됩니다. 컴퓨터의 CPU에 대한 정보를 확인해 보겠습니다.

What information would you like to retrieve (name, price, RAM)? CPU
This information is not available.

컴퓨터 이름을 확인합시다:

What information would you like to retrieve (name, price, RAM)? name
The name for this computer is Raspberry Pi 4.

우리의 코드가 작동합니다! 존재하지 않는 키를 검색하면 "else" 문이 실행됩니다. 이는 "else" 블록의 키에 액세스를 시도하지 않기 때문에 코드에서 KeyError가 발생할 수 없음을 의미합니다.

우리의 코드가 작동합니다! 존재하지 않는 키를 검색하면 "else" 문이 실행됩니다. 이는 "else" 블록의 키에 액세스를 시도하지 않기 때문에 코드에서 KeyError가 발생할 수 없음을 의미합니다.

결론

존재하지 않는 사전에서 값에 액세스하려고 하면 KeyError가 발생합니다. 키 오류를 해결하려면 키를 사용하기 전에 미리 키를 확인하고 키가 있는 경우에만 사용할 수 있습니다. try...except 블록을 사용하여 키 오류를 처리할 수 있습니다.

Python 프로그래밍 언어를 배우는 방법에 대한 조언은 포괄적인 Python 학습 방법 가이드를 확인하세요. 이 가이드에서 최고의 학습 리소스, 책 및 과정에 대한 링크를 찾을 수 있습니다.