3 回答
TA贡献1770条经验 获得超3个赞
你打错字了,应该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。
TA贡献1813条经验 获得超2个赞
def consolidate(*seqs):
d={}
for i in seqs:
for number in i: # here is the problem, should be i not seqs
d[number]=d.get(number,0)+1
return d
print(consolidate([1,2,3], [1,1,1], [2,4], [1]))
PS 调试时尝试打印中间结果。这对于追踪问题非常有用。
TA贡献1871条经验 获得超13个赞
您可以考虑使用 的子类dict
,Counter
它是为用例而设计的,如下所示:
from collections import Counter
def consolidate(*seq):
return dict(Counter([x for l in seq for x in l]))
print(consolidate([1,2,3], [1,1,1], [2,4], [1]))
输出:
{1: 5, 2: 2, 3: 1, 4: 1}
添加回答
举报