Я запускаю программу на Python с использованием кода Visual Studio, и данные для нее выглядят так:
data = {
[0, 0, 0] : 0,
[0, 0, 1] : 0,
[0, 1, 0] : 0,
[0, 1, 1] : 0,
[1, 0, 0] : 1,
[1, 0, 1] : 1,
[1, 1, 0] : 1,
[1, 1, 1] : 1
}
Но когда я запускаю это, это дает мне ошибку:
TypeError: unhashable type: 'list'
Как я могу хранить списки в словаре? У меня ощущение, что список не может быть ключом, но я хочу что-то вроде этого, а не переменную для каждого из списков.
Ключи в словаре должны быть неизменяемыми. Списки изменяемы, поэтому они не могут быть ключами. Вы можете преобразовать их в кортежи.
Вместо этого вы можете использовать tuples
data = {
(0, 0, 0) : 0,
(0, 0, 1) : 0,
(0, 1, 0) : 0,
(0, 1, 1) : 0,
(1, 0, 0) : 1,
(1, 0, 1) : 1,
(1, 1, 0) : 1,
(1, 1, 1) : 1
}
Это кортежи. Наборы будут {0, 0, 0}
. Также нельзя использовать наборы в качестве ключей, для этого нужен frozenset
.
Вы правы @Radoslaw. Виноват. Исправил это
Вам нужны как минимум кортежи вместо списка, поэтому:
data = {
(0, 0, 0) : 0,
...
}
Обратите внимание на круглые скобки вместо квадратных скобок. Кортежи похожи на списки, за исключением того, что они неизменяемы и могут без проблем использоваться в качестве ключей в словаре.
Вы не можете использовать
list
в качестве ключа в dict. Вместо этого вы можете использоватьtuple