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 for key in list}
但我收到一个错误:
类型错误:不可散列类型:“列表”
我该如何解决这个问题?
解决方案
您不能创建以列表为键的字典,因为列表是可变对象。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}
还要检查元组和序列以获得更好的理解
推荐阅读
- ios - 如何以更好的性能在 UITableViewCell 的 UIlabel 内显示自定义线方向
- python - 拦截DNS请求——推导QR、Opccode、AA、TC等
- flask - 你可以使用 $SCRIPT_ROOT 在 Flask 中重定向吗?
- java - 防止父级仅针对某些视图获取触摸事件?
- java - 如何限制java进程RAM的使用
- docker - 无法从 Drone 获取最后一次提交的详细信息
- r - 为什么读取行比读取列快?
- css - 如何在 angular5 项目中为管理员和用户使用单独的模板?
- identityserver4 - 静态文件 - asp.net web api core 2.1 身份验证方案 Bearer
- vue.js - 当我们从 vuejs 中的选择中选择某个选项时如何显示或隐藏表单元素