Giriş:
(Muhtemelen) en iyi çözümler var. Ancak bunu bilmeniz ve hatırlamanız gerekir ve bazen Python sürümünüzün çok eski olmadığını veya sorunun ne olabileceğini ummanız gerekir.
Sonra en 'hacky' çözümleri var. Harika ve kısa ama bazen anlamak, okumak ve hatırlamak zordur.
Bununla birlikte, tekerleği yeniden icat etmeye çalışmak için bir alternatif var. - Tekerleği neden yeniden icat ediyorsun? - Genel olarak, öğrenmenin gerçekten iyi bir yolu (ve bazen de zaten var olan araç tam olarak istediğinizi ve / veya istediğiniz şekilde yapmadığı için) ve bilmiyorsanız en kolay yol olduğu için veya probleminiz için mükemmel aracı hatırlamıyorum.
Yani , Counter
sınıfın tekerleğini collections
modülden yeniden keşfetmeyi öneriyorum (en azından kısmen):
class MyDict(dict):
def __add__(self, oth):
r = self.copy()
try:
for key, val in oth.items():
if key in r:
r[key] += val # You can custom it here
else:
r[key] = val
except AttributeError: # In case oth isn't a dict
return NotImplemented # The convention when a case isn't handled
return r
a = MyDict({'a':1, 'b':2, 'c':3})
b = MyDict({'b':3, 'c':4, 'd':5})
print(a+b) # Output {'a':1, 'b': 5, 'c': 7, 'd': 5}
Muhtemelen bunu uygulamanın başka bir yolu olurdu ve bunu yapmak için zaten araçlar var, ancak her şeyin temelde nasıl çalışacağını görselleştirmek her zaman güzel.
sum(counters)
maalesef çalışmıyor.