TypeError:update()需要1到2个位置参数,但给出了3个。

问题描述:

Counter.update()函数需要两个参数(数据及其键),我提供了两个参数,但它抱怨提供了三个参数。TypeError:update()需要1到2个位置参数,但给出了3个。

from collections import Counter 
InputString1 = input() 
InputString2 = input() 
Set1 = Counter() 
Set2 = Counter() 
for i in range(len(InputString1)): 
    arg1 = InputString1.count(InputString1[i]) 
    Set1 = Set1.update(InputString1[i], arg1) 
for i in range(len(InputString2)): 
    arg2 = InputString2.count(InputString2[i]) 
    Set2 = Set2.update(InputString2[i], arg2) 
Temp = Set1 
Temp.subtract(Set2) 
TotCount = sum(Temp.values()) 
Temp = Set2 
Temp.subtract(Set1) 
TotCount = TotCount + sum(Temp.values()) 
print(TotCount) 



Traceback (most recent call last): 
    File "pallidromemake.py", line 8, in <module> 
    Set1 = Set1.update(InputString1[i], arg1) 
TypeError: update() takes from 1 to 2 positional arguments but 3 were given 
+0

您是否正在阅读正确的文档:https://docs.python.org/2/library/collections.html#collections.Counter.update? Plus不要将更新调用分配给同一个变量,'update()'返回'None'。 –

由于Counter是一类,它的所有方法都为Counter实例的第一个参数。口译员拿起的第三个参数是Set1,因为Set1.update(InputString1[i], arg1)相当于Counter.update(Set1, InputString1[i], arg1)

所以,当你打电话给Set1.update时,你真的应该只传递一个参数,一个迭代或映射。试试这个,把数据和它的关键字放到一个字典中并作为一个参数传递。

arg1 = InputString1.count(InputString1[i]) 
Set1 = Set1.update({InputString1[i]: arg1})