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

Python TypeError:해시할 수 없는 유형:'슬라이스' 솔루션

Python 사전의 값은 목록처럼 슬라이싱할 수 없습니다. 사전에 사용자 지정 키 값이 있을 수 있기 때문입니다. 0부터 인덱싱되지 않습니다. 사전을 목록처럼 슬라이스하려고 하면 "TypeError:unhashable type:'slice'" 오류가 발생합니다.

이 가이드에서는 이 오류의 의미와 코드에 오류가 표시되는 이유에 대해 설명합니다. 이 오류를 해결하는 데 도움이 되도록 이 오류의 예를 설명합니다.

TypeError:해시할 수 없는 유형:'슬라이스'

슬라이스는 문자열, 목록 또는 튜플과 같은 시퀀스의 하위 집합입니다. 이름은 슬라이스의 목적을 나타냅니다. 시퀀스의 "슬라이스"입니다.

다음 프로그램을 고려하십시오.

news_sites = ["New York Times", "Washington Post", "CNN"]
print(news_sites[:2])

이 코드는 "news_sites" 목록에서 처음 두 값을 검색하여 콘솔에 인쇄합니다. 코드는 ['뉴욕 타임즈', '워싱턴 포스트']를 반환합니다.

이것은 슬라이싱의 예입니다. 목록에서 두 개의 개체를 검색하고 있습니다. 콜론과 인덱스 값을 지정하여 검색할 객체를 Python에 알려줍니다.

사전은 목록처럼 슬라이싱할 수 없습니다. 사전에는 색인 번호가 없으므로 이 구문이 적용되지 않습니다.

TypeError:해시할 수 없는 유형:'슬라이스'

컴퓨터 철물점에서 판매되는 키보드에 대한 정보를 표시하는 프로그램을 빌드하십시오. 시작하려면 키보드에 대한 데이터로 사전을 정의하십시오.

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

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

keyboard = {
	  "name": "Huntsman Mini",
	  "brand": "Razer",
	  "price": 119.99,
	  "switch_type": "Razer Switches",
}

이 프로그램은 키보드 이름, 가격, 키보드 브랜드 및 키보드에서 사용하는 스위치 유형에 대한 정보를 저장합니다. 키보드 이름, 키보드 브랜드 및 가격만 표시할 수 있습니다.

이렇게 하려면 슬라이싱을 사용하여 사전에서 처음 세 항목을 검색합니다. 다음 항목은 키보드 이름, 브랜드 및 가격입니다.

show_to_customer = keyboard[:3]

이 코드는 사전에서 처음 세 항목을 검색합니다. 다음으로 for 루프를 사용하여 이 목록을 반복하고 각 항목을 콘솔에 인쇄합니다.

for s in show_to_customer:
	     print(s[1])

인덱싱을 사용하여 "show_to_customer" 변수의 각 레코드에서 값을 검색합니다. 그런 다음 print()를 사용하여 해당 값을 콘솔에 인쇄합니다. 성명.

코드를 실행하고 어떤 일이 일어나는지 봅시다:

Traceback (most recent call last):
  File "main.py", line 8, in <module>
	     show_to_customer = keyboard[:3]
TypeError: unhashable type: 'slice'

코드가 오류를 반환합니다.

해결책

목록과 달리 사전은 슬라이싱할 수 없습니다. 사전에는 색인 번호가 없기 때문에 슬라이싱을 사용하여 사전에서 항목을 검색할 수 없습니다. 데이터는 키-값 쌍으로 저장됩니다. 사전은 슬라이스할 수 없기 때문에 for 이전의 루프는 적절하지 않습니다.

사전에서 액세스하려는 값을 직접 지정해야 합니다. 이렇게 하려면 사전에서 적절한 키 이름을 참조하십시오.

코드를 풀기 위해 콘솔에 표시하려는 각 값에 개별적으로 액세스하겠습니다.

keyboard = {
	  "name": "Huntsman Mini",
	  "brand": "Razer",
	  "price": 119.99,
	  "switch_type": "Razer Switches",
}

print("Name: " + keyboard["name"])
print("Brand: " + keyboard["brand"])
print("Price: $" + str(keyboard["price"]))

각 print() 문은 사전과 다른 값을 참조합니다. 첫 번째 print 문은 "Name:"이라는 레이블을 출력하고 그 뒤에 사전에 있는 "name" 값을 콘솔에 출력합니다. 두 번째 및 세 번째 명령문은 각각 "brand" 및 "price" 값을 콘솔에 출력합니다.

str()를 사용하여 "price" 값을 문자열로 변환합니다. 연결 연산자(+)를 사용하여 "가격:$" 레이블과 연결하는 메서드입니다.

새 프로그램을 실행해 보겠습니다.

Name: Huntsman Mini
Brand: Razer
Price: $119.99

코드는 콘솔에 표시하려는 세 가지 정보를 성공적으로 인쇄합니다. 사용자는 키보드의 이름, 브랜드 및 가격을 볼 수 있습니다.

결론

"TypeError:unhashable type:'slice'" 오류는 슬라이싱 구문을 사용하여 사전에서 항목에 액세스하려고 하면 발생합니다. 이 오류를 해결하려면 사전에서 직접 액세스하려는 항목을 참조해야 합니다.

이제 전문가처럼 이 오류를 해결하는 데 필요한 지식을 얻었습니다!