ভূমিকা:
এখানে (সম্ভবত) সেরা সমাধান রয়েছে। তবে আপনাকে এটি জানতে হবে এবং এটি মনে রাখতে হবে এবং কখনও কখনও আপনাকে আশা করতে হবে যে আপনার পাইথনের সংস্করণটি খুব পুরানো নয় বা সমস্যাটি যাই হোক না কেন।
তারপরে সর্বাধিক 'হ্যাকি' সমাধান রয়েছে। এগুলি দুর্দান্ত এবং সংক্ষিপ্ত তবে কখনও কখনও বোঝা, পড়া এবং মনে রাখা শক্ত।
চাকাটি পুনরায় উদ্ভাবনের চেষ্টা করার জন্য একটি বিকল্প রয়েছে। - চাকা পুনরুদ্ধার কেন? - সাধারণত কারণ এটি শেখার সত্যিই ভাল উপায় (এবং কখনও কখনও কেবল কারণ ইতিমধ্যে বিদ্যমান সরঞ্জামটি আপনার পছন্দ মতো এবং / অথবা আপনি যেভাবে চান তা ঠিকভাবে করে না) এবং আপনি যদি না জানেন তবে বা সহজ উপায় আপনার সমস্যার জন্য নিখুঁত সরঞ্জাম মনে রাখবেন না।
সুতরাং , আমি মডিউল (আংশিকভাবে কমপক্ষে) Counterথেকে শ্রেণীর চাকাটি পুনঃস্থাপনের প্রস্তাব করছি collections:
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}
এটি প্রয়োগ করার সম্ভবত অন্য উপায় আছে এবং এটি করার জন্য ইতিমধ্যে সরঞ্জাম রয়েছে তবে জিনিসগুলি কীভাবে মূলত কাজ করবে তা ভিজ্যুয়ালাইজ করা সবসময়ই সুন্দর।
sum(counters)দুর্ভাগ্যক্রমে, কাজ করে না।