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'" 오류는 슬라이싱 구문을 사용하여 사전에서 항목에 액세스하려고 하면 발생합니다. 이 오류를 해결하려면 사전에서 직접 액세스하려는 항목을 참조해야 합니다.
이제 전문가처럼 이 오류를 해결하는 데 필요한 지식을 얻었습니다!