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

时间:2015-09-26 23:23:55

标签: python string multiset python-collections

Counter.update()函数需要两个参数(数据及其键),我提供了两个参数,但它抱怨提供了三个参数。

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

1 个答案:

答案 0 :(得分:0)

由于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})