>백엔드 개발 >파이썬 튜토리얼 >Python 사전의 키가 튜플일 수 있나요?

Python 사전의 키가 튜플일 수 있나요?

silencement
silencement원래의
2019-06-17 15:01:5028339검색

Python 사전의 키가 튜플일 수 있나요?

파이썬 사전의 키

사전의 값에는 제한이 없습니다. 표준 객체부터 사용자 정의 객체까지 모든 Python 객체가 될 수 있지만 사전의 키는 유형입니다. 제한된.

키는 여러 값에 대응할 수 없습니다

한 가지 원칙을 명확히 해야 합니다. 각 키는 하나의 항목에만 대응할 수 있습니다. 즉, 하나의 키에 해당하는 여러 값은 허용되지 않습니다(목록, 튜플 및 기타 사전과 같은 컨테이너 개체는 허용됨). 키 충돌이 있는 경우(즉, 사전 키에 값이 반복적으로 할당됨) 마지막(가장 최근) 할당이 적용됩니다. Python은 사전의 키 충돌로 인해 오류를 생성하지 않습니다. 충돌이 발생하더라도 키-값 쌍을 할당할 때마다 확인하므로 일정 시간이 소요됩니다. 메모리.

>>> dict1 = {'foo':789, 'foo': 'xyz'} 
>>> dict1 
{'foo': 'xyz'} 
>>> dict1['foo'] = 123
>>> dict1 
{'foo': 123}

키는 해시 가능해야 합니다

대부분의 Python 객체는 키 역할을 할 수 있지만 해시 가능 객체여야 합니다. 목록 및 사전과 같은 변경 가능한 유형은 해시 가능하지 않으므로 키로 사용할 수 없습니다. 모든 불변 유형은 해시 가능하므로 사전 키로 사용할 수 있습니다. 동일한 값을 갖는 숫자는 동일한 키를 나타낸다는 점, 즉 정수 1과 부동소수점 숫자 1.0의 해시값은 동일하며 동일한 키라는 점에 유의해야 한다.

동시에 해시 가능한 일부 변경 가능한 객체(드물게)도 있으며 사전 키로 사용할 수 있지만 드물습니다. __hash__() 특수 메서드를 구현하는 클래스를 예로 들어 보겠습니다. __hash__() 메서드는 정수를 반환하기 때문에 불변 값이 여전히 (사전 키로) 사용됩니다. 키는 왜 해시 가능해야 합니까? 인터프리터는 해시 함수를 호출하여 사전의 키 값을 기반으로 데이터를 저장할 위치를 계산합니다. 키가 변경 가능한 객체인 경우 해당 값이 변경될 수 있습니다. 키가 변경되면 해시 함수는 데이터를 저장하기 위해 다른 주소에 매핑됩니다. 이런 일이 발생하면 해시 함수는 관련 데이터를 안정적으로 저장하거나 검색할 수 없습니다. 해시 가능한 키를 선택하는 이유는 해당 값을 변경할 수 없기 때문입니다.

예를 들어

d = {('a','b'):(3,7)}

위의 예에서는 튜플이 사전의 키로 사용되는 경우 오류가 보고되지 않는 것을 볼 수 있으며 이는 튜플이 사전의 키로 사용될 수도 있음을 나타냅니다. .

숫자 및 문자열은 사전 키로 사용할 수 있습니다. 튜플은 변경할 수 없지만 변경할 수는 없습니다. 따라서 튜플을 유효한 키로 사용하는 것은 제한되어야 합니다. 튜플에 숫자만 포함된 경우 문자열과 같은 변경 불가능한 매개변수만 사용할 수 있습니다. 사전의 유효한 키.

위 내용은 Python 사전의 키가 튜플일 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.