TypeError: update() принимает от 1 до 2 позиционных аргументов, но было задано 3.
Функция 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 ответ
Поскольку 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})