从列表列表创建字典,其中关键字是列表[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从列表列表创建字典,其中关键字是列表[重复]相关的知识,希望对你有一定的参考价值。
此问题已经在这里有了答案:
我有一个清单清单:
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 for key in list
但出现错误:
TypeError:不可散列的类型:'列表'
如何解决此问题?
答案
您不能将列表用作键,因为它们是可更改的-因此它们不可散列。您可以将列表转换为元组并将其用作键。
tuples_dict = tuple(key): 0 for key in lists
另一答案
您不能创建以列表为键的字典,因为列表是mutable对象。您可以做的一件事是从tuples
而不是列表创建字典,因为它们可以被散列,因此您可以在docs上查看有关此内容的更多信息,如下所述:
[不同于由数字范围索引的序列,由键索引的字典,键可以是任何不可变类型
所以您可以构造字典的一种方法是将列表映射到tuples
,然后将它们用作keys
:
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 and Sequences以获得更好的理解
另一答案
列表是可变的,因此不能是字典中的键。将它们转换为元组。此外,请避免将list用作变量。
dict([(tuple(x),0) for x in lst])
以上是关于从列表列表创建字典,其中关键字是列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章