Почему я не могу использовать список как клавишу Dict в Python?

Я немного запутался о том, что может / нельзя использовать в качестве ключа для диктома Python.

dicked = {}
dicked[None] = 'foo'     # None ok
dicked[(1,3)] = 'baz'    # tuple ok
import sys
dicked[sys] = 'bar'      # wow, even a module is ok !
dicked[(1,[3])] = 'qux'  # oops, not allowed

Так что кортеж является неизменным типом, но если я скрываю список внутри него, то он не может быть ключом .. Разве я не мог мне просто легко скрыть список внутри модуля?

У меня было немного расплывчатая идея о том, что ключ должен быть «хешами», но я просто собираюсь признать свое собственное невежество о технических деталях; Я не знаю, что на самом деле происходит здесь. Что пошло бы не так, если вы пытались использовать списки в качестве клавиш, с хешем как, скажем, их память?

82
задан wim 31 August 2011 в 13:28
поделиться