কম্পিউটার

পাইথনে কাউন্টার?


একটি কাউন্টার হল একটি ধারক যা কতবার সমতুল্য মান যোগ করা হয়েছে তা ট্র্যাক রাখে। পাইথন কাউন্টার ক্লাস সংগ্রহ মডিউলের একটি অংশ এবং এটি অভিধানের একটি সাবক্লাস।

পাইথন কাউন্টার

আমরা কাউন্টারকে আইটেমগুলির একটি অবিন্যস্ত সংগ্রহ হিসাবে ভাবতে পারি যেখানে আইটেমগুলি অভিধান কী হিসাবে সংরক্ষণ করা হয় এবং অভিধানের মান হিসাবে তাদের গণনা করা হয়৷

কাউন্টার আইটেম গণনা ধনাত্মক, শূন্য বা ঋণাত্মক পূর্ণসংখ্যা হতে পারে। যদিও এর কী এবং মানগুলিতে কোনও সীমাবদ্ধতা নেই তবে সাধারণত মানগুলি সংখ্যা হিসাবে তৈরি করা হয় তবে আমরা অন্যান্য অবজেক্টের ধরনও সংরক্ষণ করতে পারি।

শুরু হচ্ছে

কাউন্টার শুরুর তিনটি ফর্ম সমর্থন করে। এর কনস্ট্রাক্টরকে আইটেমগুলির একটি ক্রম, কী এবং গণনা সম্বলিত একটি অভিধান, অথবা কীওয়ার্ড আর্গুমেন্ট ব্যবহার করে স্ট্রিং নামগুলি গণনার জন্য ম্যাপিং করা যেতে পারে।

import collections
print (collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']))
print (collections.Counter({'a': 2, 'b': 3, 'c':1}))
print(collections.Counter(a=2, b=3, c=1))

আরম্ভ করার তিনটি ফর্মের আউটপুট একই -

Counter({'b': 3, 'a': 2, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 1})
Counter({'b': 3, 'a': 2, 'c': 1})

একটি খালি কাউন্টার তৈরি করতে, কোন যুক্তি ছাড়াই কাউন্টারটি পাস করুন এবং আপডেট পদ্ধতির মাধ্যমে এটি পপুলেট করুন৷

import collections
c = collections.Counter()
print('Initial: ', c)
c.update('abcddcba')
print('Sequence: ', c)
c.update({'a': 1, 'd':5})
print('Dict: ', c)

আউটপুট

Initial: Counter()
Sequence: Counter({'a': 2, 'b': 2, 'c': 2, 'd': 2})
Dict: Counter({'d': 7, 'a': 3, 'b': 2, 'c': 2})

অ্যাক্সেসিং কাউন্ট

একবার কাউন্টারটি জনবহুল হয়ে গেলে, এটির মান অভিধান API এর মাধ্যমে আনা যেতে পারে।

import collections
c = collections.Counter('abcddcba')
for letter in 'abcdef':
   print('%s : %d' %(letter, c[letter]))

আউটপুট

a : 2
b : 2
c : 2
d : 2
e : 0
f : 0

কাউন্টার অজানা আইটেমগুলির জন্য KeyError বাড়ায় না (যেমন আইটেম e &f আমরা উপরের প্রোগ্রামে উল্লেখ করেছি)। যদি ইনপুটে একটি মান দেখা না হয়, তাহলে তার সংখ্যা 0 (যেমন উপরের আউটপুটে অজানা আইটেম e &f)।

উপাদান() পদ্ধতি একটি পুনরাবৃত্তিকারী প্রদান করে যা কাউন্টারের পরিচিত সমস্ত আইটেম তৈরি করে।

import collections
c = collections.Counter('Python Counters')
c['z'] = 0
print(c)
print(list(c.elements()))

আউটপুট

Counter({'t': 2, 'o': 2, 'n': 2, 'P': 1, 'y': 1, 'h': 1, ' ': 1, 'C': 1, 'u': 1, 'e': 1, 'r': 1, 's': 1, 'z': 0})
['P', 'y', 't', 't', 'h', 'o', 'o', 'n', 'n', ' ', 'C', 'u', 'e', 'r', 's']

উপাদানগুলির ক্রম স্থির নয়, এবং শূন্যের কম গণনা সহ আইটেমগুলি অন্তর্ভুক্ত নয়৷

n ইনপুট এবং তাদের নিজ নিজ গণনার মধ্যে সাধারণ ইনপুট তৈরি করতে আমরা most_common() ফাংশন ব্যবহার করি।

import collections
c = collections.Counter()
texts = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum.'''
for word in texts:
c.update(word.rstrip().lower())
print("Five most common letters in the texts: ")
for letter, count in c.most_common(5):
print("%s: %7d" %(letter, count))

আউটপুট

Five most common letters in the texts:
i: 42
e: 38
t: 32
o: 29
u: 29

উপরের উদাহরণটি একটি ফ্রিকোয়েন্সি ডিস্ট্রিবিউশন তৈরি করতে পাঠ্যগুলিতে প্রদর্শিত অক্ষরগুলি গণনা করে (বা আপনি একটি ফাইল বিবেচনা করতে পারেন) তারপরে সর্বাধিক সাধারণ পাঁচটি প্রিন্ট করে। most_common() তে আর্গুমেন্ট ছেড়ে দিলে ফ্রিকোয়েন্সি অনুসারে সমস্ত আইটেমের একটি তালিকা তৈরি হয়।

পাটিগণিত

কাউন্টার ইন্সট্যান্স পাটিগণিত সমর্থন করে এবং সমষ্টিগত ফলাফলের জন্য অপারেশন সেট করে।

import collections
c1 = collections.Counter(['a', 'b', 'c', 'a' ,'b', 'b'])
c2 = collections.Counter('alphabet')
print('C1: ', c1)
print('C2: ', c2)
print ('\nCombined counts: ')
print(c1 + c2)
print('\nSubtraction: ')
print(c1 - c2)
print('\nIntersection (taking positive minimums): ')
print(c1 & c2)
print('\nUnion (taking maximums): ')
print(c1 | c2)

আউটপুট

C1: Counter({'b': 3, 'a': 2, 'c': 1})
C2: Counter({'a': 2, 'l': 1, 'p': 1, 'h': 1, 'b': 1, 'e': 1, 't': 1})
Combined counts:
Counter({'a': 4, 'b': 4, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})
Subtraction:
Counter({'b': 2, 'c': 1})
Intersection (taking positive minimums):
Counter({'a': 2, 'b': 1})
Union (taking maximums):
Counter({'b': 3, 'a': 2, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})

প্রতিবার একটি অপারেশনের মাধ্যমে একটি নতুন কাউন্টার তৈরি করা হলে, শূন্য বা ঋণাত্মক গণনা সহ যেকোনো আইটেম বাতিল করা হয়।


  1. issuperset() পাইথনে

  2. পাইথনে আন্ডারস্কোর(_)

  3. পাইথনে কুইন

  4. আমি কিভাবে সঠিকভাবে একটি পাইথন বস্তু পরিষ্কার করতে পারি?