我想在Counter类中实现 add 方法。无需导入计数器。
我有点想法,如代码所示,但这总是给我一个错误。
class MyCounter:
def __init__(self, s=None):
self.q = {}
for x in s:
self.add(x)
def __repr__(self):
return str(self.q)
def add (self,x):
if x in self.q:
self.q[x] = self.q[x] + 1
else:
self.q[x]=1
def __add__(self, args):
new_dict = self.q
for x in new_dict:
if x in args:
u=args.get(x)
new_dict[x] = new_dict[x]+ u
else:
new_dict[x]=1
这就是我想要的
a= MyCounter("hahahahha")
a+ MyCounter("hahhahahah")
new_dict = {'h': 11, 'a': 8}
我尝试的错误代码
TypeError:“ MyCounter”类型的参数不可迭代
答案 0 :(得分:0)
您的行:
if x in args:
本质上是:
if x in MyCounter("hahhahahah"):
但是MyCounter
不支持in
运算符。
您可能想对q
进行检查:
if x in args.q:
您还可以为您的类实现in
运算符(使用__contains__
方法),或者直接为dict
的子类实现(这就是collections.Counter
的作用)。 / p>
您在这里也遇到同样的问题:
u=args.get(x)
MyCounter
没有get()
方法,您想使用此方法:
u=args.q.get(x)