У меня есть список списков с 4 элементами в каждом из них.Как изменить список, который будет использоваться в качестве словарного ключа
LoL=[[1,1,1,1],[4,2,3,[1,3]],[4,5,3,[0,4]]]
4-я элементы могут быть список из двух частей, как [0,4]
в [4,5,3,[0,4]]
.
мне нужно использовать его элементы в качестве ключей для словаря,
Pseudo code:
dic = { [1,1,1,1]:'a',[4,2,3,[1,3]]:'b',[4,5,3,[0,4]]:'c' }
так пытался изменить их tuple
с. Это работает для простых списков (например, [1,1,1,1]
), но для тех, содержащих другой список (например, [4,5,3,[0,4]]
) он выдает ошибку:
dic[tuple([1,1,1,1])]=['bla','blah']
print dic
{(1, 1, 1, 1): ['bla', 'blah']}
dic[tuple([4, 2, 3, [1, 3]])]=['blablah']
TypeError: unhashable type: 'list'
Мне нужно повторно использовать ключи, как позже списки. Поэтому попытка изменить элементы LoL на строки (например, с использованием repr()
) не является вариантом!
Редактировать: Я знаю, почему списки не могут использоваться в качестве ключей словаря. Здесь они не изменяются в то время как в dic
. Мне просто нужно каким-то образом передать их другому модулю, чтобы извлечь их.
Я прочитал, что, я знаю, почему! и как кортежи не решили мою проблему. – Angel
LoL передается моей программе, и я не могу ее изменить. Он вводится в мой модуль. – Angel
@vaultah: Angel _knows_ они не могут использовать списки в качестве ключей, но хотят знать, как обойти это, что ваши ссылки не полностью адресуют. –