Создайте словарь в Python, который индексируется списками [дубликат]

12
задан Mike Graham 19 April 2010 в 22:38
поделиться

2 ответа

ключи dict должны быть хешируемыми , эти списки не являются изменяемыми . Вы можете изменить список после того, как составите его. Подумайте, насколько сложно было бы попытаться сохранить диктовку при изменении данных, используемых в качестве ключей; в этом нет никакого смысла. Представьте себе этот сценарий

>>> foo = [1, 2]
>>> bar = {foo: 3}
>>> foo.append(4)

, и вы поймете, почему Python не пытается поддерживать списки в качестве ключей.

Наиболее очевидное решение - использовать в качестве ключей кортежи вместо списков.

>>> 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
18
ответ дан 2 December 2019 в 07:02
поделиться

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

>>>d={}
>>>a = tuple((1,2))
>>>a
(1, 2)
>>>d[a] = 3
>>>print d
{(1, 2): 3}
2
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: