Список Python внутри словаря с теми же ключами - PullRequest
0 голосов
/ 21 июня 2019

Я запускаю программу на 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 тип: 'list'

Как я могу хранить списки в словаре? У меня такое ощущение, что список не может быть ключом, но я хочу что-то вроде этого, а не переменную для каждого из списков.

Ответы [ 3 ]

4 голосов
/ 21 июня 2019

Ключи в словаре должны быть неизменяемыми.Списки изменчивы, поэтому они не могут быть ключами.Вы можете превратить их в кортежи.

3 голосов
/ 21 июня 2019

Вам нужно по крайней мере кортежи вместо списка, поэтому:

data = {
    (0, 0, 0) : 0,
...
}

Обратите внимание на круглые скобки вместо квадратных скобок. Кортежи похожи на списки, за исключением того, что они неизменны и могут использоваться в качестве ключей в словаре без хлопот.

1 голос
/ 21 июня 2019

Вместо этого вы можете использовать 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...