将字典附加到另一个字典时发生TypeError

时间:2019-04-29 18:00:08

标签: python python-3.x dictionary

我有几个返回字典的函数。

让我们说funcA返回:{'cat': 2, 'dog': 3, 'cAt': 1}

然后funcB返回{'cat': 1, 'dog': 1, 'cAt': 1, 'man' : 1}

我尝试使用new_dict = {}将它们附加到Counter

所以我最终会得到这个

 new_dict = `{'cat': 3, 'dog': 4, 'cAt': 2, 'man' : 1}`

(我想附加键并将值求和到每个唯一键中)

因此,对于每个函数调用,我都做了:

new_dict += Counter(func())

但是后来我发现每个函数都超过了-进行了先前的函数调用,或者在某些情况下出现了Type错误:

TypeError: unsupported operand type(s) for +=: 'dict' and 'Counter'

我如何正确执行它?

2 个答案:

答案 0 :(得分:0)

您应该将new_dict初始化为Counter对象而不是字典,以便它将使用Counter.__iadd__方法对new_dict += Counter(func())进行计数所需的更新:< / p>

new_dict = Counter()

答案 1 :(得分:0)

您可以尝试:

new_dict = Counter(funcA()) + Counter(funcB())

请注意,new_dict将是一个Counter对象。如果不需要的话,可以将其转换回字典。