>백엔드 개발 >파이썬 튜토리얼 >Python 사전에서 목록이 키가 될 수 없는 이유는 무엇입니까?

Python 사전에서 목록이 키가 될 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-21 00:17:101054검색

Why Can't Lists Be Keys in Python Dictionaries?

Dict 키 유형에 대한 Python의 제한 사항 공개

Python의 사전은 다음을 포함하여 광범위한 데이터 유형을 키로 허용하는 것으로 관찰되었습니다. 없음, 튜플 및 모듈. 그러나 목록과 목록을 포함하는 튜플은 특히 제외됩니다.

제한의 이론적 근거

목록을 사전 키로 사용할 수 없는 이유는 해시 가능성이라는 기본 속성에서 비롯됩니다. . 해시 가능한 객체는 콘텐츠 수정에 관계없이 객체를 고유하게 식별하는 상수 해시 값을 보유합니다. 이 기능은 키 조회 및 삭제와 같은 효율적인 사전 작업에 매우 중요합니다.

반면 목록에는 이 속성이 없습니다. 목록을 수정하면 해당 내용이 변경되고 결과적으로 해시 값도 변경됩니다. 키는 시간이 지나도 안정적으로 유지될 것으로 예상되므로 이는 사전에서 일관되지 않은 동작으로 이어질 수 있습니다.

메모리 위치를 해시로 사용하는 것이 실패하는 이유

제안된 대로 목록의 메모리 위치를 해시로 지정해도 문제가 해결되지 않습니다. 이 접근 방식은 키를 ID별로 비교하는 것을 의미하며 이는 목록에서도 작동하지 않습니다. 다음 시나리오를 고려하십시오.

d = {}
l1 = [1, 2]
d[l1] = 'foo'
l2 = [1, 2]  # A new list with the same content as l1
d[l2] = 'bar'

이 경우 l1과 l2가 모두 사전에서 유효한 키일 것으로 예상됩니다. 그러나 l1과 l2는 서로 다른 개체이므로 메모리 위치를 해시로 사용하면 키 값이 달라져 'bar'를 검색할 수 없게 됩니다.

의미 및 대안

이 제한은 Python에서 데이터 구조를 설계하는 데 중요한 의미를 갖습니다. 튜플과 같은 불변 데이터 유형이 적합하지 않은 경우 개발자는 목록과 같은 구조를 사전 키로 나타내기 위해 사용자 정의 데이터 유형이나 해결 방법을 사용해야 합니다.

결론적으로, Python에서 목록을 dict 키로 사용할 수 없는 것은 뿌리가 있습니다. 해시 가능성이 필요하고 일관되지 않은 키 동작을 피해야 합니다. Python 애플리케이션에서 효율적이고 안정적인 데이터 관리를 위해서는 이러한 제한 사항을 이해하는 것이 필수적입니다.

위 내용은 Python 사전에서 목록이 키가 될 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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