dict deben ser hashable, que las listas no son becase que son mutables . Puede cambiar una lista después de hacerla. Piense en lo difícil que sería tratar de mantener un dict cuando los datos utilizados como claves cambian; no tiene ningún sentido. Imagine este escenario
>>> foo = [1, 2]
>>> bar = {foo: 3}
>>> foo.append(4)
y verá por qué Python no intenta admitir listas como claves.
La solución más obvia es usar tuplas en lugar de listas como claves.
>>> d = {[1, 2, 3]: 1, [2, 3]: 3}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d = {(1, 2, 3): 1, (2, 3): 3}
>>> d
{(2, 3): 3, (1, 2, 3): 1}
>>> d[2, 3]
3
que no es posible, las claves dict deben ser inmutables. usa tuplas en su lugar. – SilentGhost
Bueno, ¿cómo podría hacer eso? D ((1,2,3)) = 1 también devuelve un error. – Chris
Parece que está usando '(...)' cuando quiere usar '[...]'. 'D [1, 2, 3] = 1' debería funcionar bien. –