Giới thiệu:
Có những giải pháp tốt nhất (có thể). Nhưng bạn phải biết và ghi nhớ nó và đôi khi bạn phải hy vọng rằng phiên bản Python của bạn không quá cũ hoặc bất cứ vấn đề gì có thể xảy ra.
Sau đó, có những giải pháp 'hacky' nhất. Chúng rất hay và ngắn nhưng đôi khi rất khó hiểu, dễ đọc và dễ nhớ.
Tuy nhiên, có một cách khác là cố gắng phát minh lại bánh xe. - Tại sao phải phát minh lại bánh xe? - Nói chung vì đó là cách học thực sự tốt (và đôi khi chỉ vì công cụ đã tồn tại không thực hiện chính xác những gì bạn muốn và / hoặc theo cách bạn muốn) và cách dễ nhất nếu bạn không biết hoặc đừng nhớ công cụ hoàn hảo cho vấn đề của bạn
Vì vậy , tôi đề xuất phát minh lại bánh xe của Counter
lớp từ collections
mô-đun (ít nhất là một phần):
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}
Có lẽ sẽ có cách khác để thực hiện điều đó và đã có công cụ để làm điều đó nhưng thật tuyệt khi hình dung mọi thứ về cơ bản sẽ hoạt động như thế nào.
sum(counters)
không may làm việc