Python 从列表列表创建字典,其中键是列表
我有一份清单:Python 从列表列表创建字典,其中键是列表,python,Python,我有一份清单: list = [[0, 0, 0, 0, 1, 10, 10], [0, 0, 0, 0, 1, 11, 10], [1, 1, 1, 1, 0, 30, 25]] 我想从此列表创建一个字典,其中键为列表,值为0: dict = {[0, 0, 0, 0, 1, 10, 10]: 0, [0, 0, 0, 0, 1, 11, 10]: 0, [1, 1, 1, 1, 0, 30, 25]: 0} 我尝试了以下方法:dict={key:0代表列表中的键} 但我有一个错误: Ty
list = [[0, 0, 0, 0, 1, 10, 10], [0, 0, 0, 0, 1, 11, 10], [1, 1, 1, 1, 0, 30, 25]]
我想从此列表创建一个字典,其中键为列表,值为0:
dict = {[0, 0, 0, 0, 1, 10, 10]: 0, [0, 0, 0, 0, 1, 11, 10]: 0, [1, 1, 1, 1, 0, 30, 25]: 0}
我尝试了以下方法:dict={key:0代表列表中的键}
但我有一个错误:
TypeError:不可损坏的类型:“列表”
如何解决此问题?由于列表是可变对象,因此无法创建以列表为键的词典。您可以做的一件事是从
元组而不是列表创建字典,因为它们可以被散列,您可以查看更多关于这方面的信息,如所述:
与序列不同,序列由一系列数字索引,字典由键索引,键可以是任何不可变类型
因此,构建字典的一种方法是将列表映射到元组
,并将它们用作键
:
l = [[0, 0, 0, 0, 1, 10, 10], [0, 0, 0, 0, 1, 11, 10], [1, 1, 1, 1, 0, 30, 25]]
dict.fromkeys(map(tuple, l), 0)
{(0, 0, 0, 0, 1, 10, 10): 0,
(0, 0, 0, 0, 1, 11, 10): 0,
(1, 1, 1, 1, 0, 30, 25): 0}
另外,请检查是否有更好的理解您不能将列表用作键,因为它们是可更改的,所以它们是不可损坏的。您可以将列表转换为元组并将其用作键
tuples\u dict={tuple(key):0表示列表中的键}
列表是可变的,因此不能是字典中的键。将它们转换为元组。此外,避免使用列表作为变量
dict([(tuple(x),0) for x in lst])
您不能将列表作为键…dict={tuple(key):0表示列表中的键}
?谢谢,但在这种情况下,键是元组而不是列表您不能创建以列表作为键的词典,因为它们是可变对象。所以,非常感谢您欢迎@HoucineAmraoui!别忘了你可以投票/接受答案,参见