collections.Counter एक डिक्शनरी सबक्लास है जो हैशेबल ऑब्जेक्ट्स की गिनती करता है। यह मल्टीसेट (बैग) डेटा संरचना का कार्यान्वयन है।
इनिशियलाइज़ेशन
import collections
# 1. सीक्वेंस से
c = collections.Counter(['a', 'b', 'c', 'a', 'b', 'b'])
# Counter({'b': 3, 'a': 2, 'c': 1})
# 2. डिक्शनरी से
c = collections.Counter({'a': 2, 'b': 3, 'c': 1})
# 3. कीवर्ड आर्गुमेंट्स से
c = collections.Counter(a=2, b=3, c=1)
# खाली काउंटर
c = collections.Counter()
c.update('abcddcba') # सीक्वेंस से अपडेट
c.update({'a': 1, 'd': 5}) # डिक्शनरी से अपडेट
काउंट एक्सेस करना
c = collections.Counter('abcddcba')
for letter in 'abcdef':
print(f'{letter} : {c[letter]}')
# a:2, b:2, c:2, d:2, e:0, f:0
# अज्ञात कीज़ के लिए 0 लौटाता है (KeyError नहीं)
print(c['z']) # 0
उपयोगी मेथड्स
elements()
सभी तत्वों पर इटरेटर (काउंट > 0 वाले)।
c = collections.Counter('Python Counters')
print(list(c.elements()))
# ['P', 'y', 't', 't', 'h', 'o', 'o', 'n', 'n', ' ', 'C', 'u', 'e', 'r', 's']
most_common([n])
सबसे आम n तत्व और उनकी गिनती।
text = """Lorem ipsum dolor sit amet..."""
c = collections.Counter()
for word in text.split():
c.update(word.lower())
for letter, count in c.most_common(5):
print(f"{letter}: {count}")
# i: 42, e: 38, t: 32, o: 29, u: 29
अरिथमेटिक और सेट ऑपरेशन्स
c1 = collections.Counter(['a', 'b', 'c', 'a', 'b', 'b'])
c2 = collections.Counter('alphabet')
print(c1 + c2) # जोड़: काउंट्स जुड़ते हैं
print(c1 - c2) # घटाव: केवल पॉजिटिव काउंट्स रखे जाते हैं
print(c1 & c2) # इंटरसेक्शन: min(c1[x], c2[x])
print(c1 | c2) # यूनियन: max(c1[x], c2[x])
आउटपुट
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: Counter({'a': 2, 'b': 1})
Union: Counter({'b': 3, 'a': 2, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})
व्यावहारिक उपयोग केस
- फ्रीक्वेंसी एनालिसिस: टेक्स्ट में शब्द/अक्षर गिनती।
- लॉग एनालिसिस: IP एड्रेसेस, एरर कोड्स की गिनती।
- इन्वेंटरी मैनेजमेंट: आइटम क्वांटिटी ट्रैकिंग।
- डेटा साइंस: फीचर काउंटिंग, कॉ-ऑकरेंस मैट्रिक्स।
नोट
- काउंट्स पॉजिटिव, ज़ीरो, या नेगेटिव हो सकते हैं।
- ऑपरेशन्स के बाद ≤0 काउंट वाली कीज़ ऑटोमैटिकली हटा दी जाती हैं।
Counterडिक्शनरी की तरह व्यवहार करता है - सभी डिक्शनरी मेथड्स उपलब्ध हैं।