首页 > 解决方案 > 从列表列表创建字典,其中键是列表

问题描述

我有一个列表列表:

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}

但我收到一个错误:

类型错误:不可散列类型:“列表”

我该如何解决这个问题?

标签: python

解决方案


您不能创建以列表为键的字典,因为列表是可变对象。tuples您可以做的一件事是从而不是列表创建字典,因为它们可以被散列,您可以查看文档以获取更多信息,如所述:

与由一系列数字索引的序列不同,字典由键索引,键可以是任何不可变类型


因此,您可以构建字典的一种方法是将列表映射到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}

还要检查元组和序列以获得更好的理解


推荐阅读