python - TypeError:不可散列的类型:字典中的“列表”
问题描述
实现函数 consolidate,它在星形参数中接受零个或多个序列seqs
,并返回一个字典,其键由在这些序列中找到的值组成,然后映射到数字,指示每个值在所有序列中出现的次数。
例如consolidate([1,2,3], [1,1,1], [2,4], [1])
应该返回字典{1: 5, 2: 2, 3: 1, 4: 1}
。
我的代码:
def consolidate(*seqs):
d={}
for i in seqs:
for number in seqs:
d[number]=d.get(number,0)+1
return d
print(consolidate([1,2,3], [1,1,1], [2,4], [1]))
错误:TypeError: unhashable type
我怎样才能解决这个问题?
解决方案
你有错字,应该for number in i
不是for number in seqs
。您当前正在尝试将列表用作字典键。
def consolidate(*seqs):
d = {}
for i in seqs:
for number in i:
d[number] = d.get(number,0) + 1
return d
i
调用类似seq
=>的东西可能会更好for seq in seqs
。
推荐阅读
- python - 如何在python中有效地存储一个非常大的列表
- javascript - 检查 x 元素是否在网页中的完整视图中
- c++ - 双打意味着除加?
- python-3.x - 我需要获取过去 12 个月中每个月的所有日子的文章,但我的月份和年份都错了?
- firebase - firebase 实时数据库统一包是否支持通用 Windows 平台构建?
- serilog - 使用 serilog 创建扩展名为 .bak 的日志备份文件
- oracle - 我怎样才能制作动态pl/sql?
- linux - 通过 SSH 通过 ssh 密钥登录到 Linux 主机在第一次尝试时总是失败,tnen 有效。是否有一些可配置的超时?
- php - 如何使用 PHP 存储大量数据?
- c - 使用 while 循环而不是 pow:这个错误是什么意思?