首页 > 解决方案 > 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

我怎样才能解决这个问题?

标签: python

解决方案


你有错字,应该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


推荐阅读