Python - İleri Seviye Python

Counter Modülü

Yayın tarihi :13-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.

Bir liste veya dize içersinde en çok geçen kelime, sayı vb. gibi ifadelerin sayısını bulmak için kullanılır. Kullanım için ilk önce Counter modülünün içe aktarılması gerekmektedir.

from collections import Counter

Kullanım şekli: Counter("liste,dizin vb.")

Counter modülü altında olan özelliklere göz atalım;

['__add__', '__and__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', 
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', 
'__hash__', '__iadd__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', 
'__iter__', '__le__', '__len__', '__lt__', '__missing__', '__module__', '__ne__', '__neg__', 
'__new__', '__or__', '__pos__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '
__setattr__', '__setitem__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__weakref__',
 '_keep_positive', 'clear', 'copy', 'elements', 'fromkeys', 'get', 'items', 'keys', 'most_common', 
'pop', 'popitem', 'setdefault', 'subtract', 'update', 'values']

Bu konu hakkında örnekler yaparak konuyu anlamaya çalışalım.

Örnek-1:

#Random olarak 24 sayıdan oluşan bir liste oluşturuldu, aynı değerlerden birkaç tane oluşsun diye 4 farklı liste toplandı.
import random
list1=random.sample(range(10),k=6)
list2=random.sample(range(10),k=6)
list3=random.sample(range(10),k=6)
list4=random.sample(range(10),k=6)
listTotal=list1+list2+list3+list4
print(listTotal)

Çıktı:

[9, 8, 3, 5, 0, 6, 8, 1, 0, 3, 4, 7, 5, 4, 2, 8, 6, 3, 0, 7, 6, 2, 9, 4]
Counter(listTotal)

Çıktı:

Counter({9: 2, 8: 3, 3: 3, 5: 2, 0: 3, 6: 3, 1: 1, 4: 3, 7: 2, 2: 2})

Yukarıdaki örnekte görüldüğü gibi 9'dan 2 tane, 8'den 3 tane diye devam eden bir değer döndürülmüş oldu.

Örnek-2:

istiklalMarsi="""Dalgalan sen de şafaklar gibi ey şanlı hilâl;
Olsun artık dökülen kanlarımın hepsi helâl.
Ebediyen sana yok, ırkıma yok izmihlâl:
Hakkıdır, hür yaşamış bayrağımın hürriyet;
Hakkıdır, Hakk’a tapan milletimin istiklâl!"""
Counter(istiklalMarsi)

Çıktı:

Counter({'D': 1,
         'a': 23,
         'l': 17,
         'g': 2,
         'n': 12,
         ' ': 25,
         's': 5,
         'e': 10,
         'd': 5,
         'ş': 4,
         'f': 1,
         'k': 14,
         'r': 10,
         'i': 13,
         'b': 3,
         'y': 7,
         'ı': 13,
         'h': 6,
         'â': 4,
         ';': 2,
         '\n': 4,
         'O': 1,
         'u': 1,
         't': 5,
         'ö': 1,
         'ü': 3,
         'm': 7,
         'p': 2,
         '.': 1,
         'E': 1,
         'o': 2,
         ',': 3,
         'z': 1,
         ':': 1,
         'H': 3,
         'ğ': 1,
         '’': 1,
         '!': 1})

İstiklal Marşımızın son kıtasında geçen harf sayıları yukarıdaki listelenmiştir. Eğer harf olarak saydırma işlemi değil de kelime olarak ayırmak isteseydik;

print(istiklalMarsi.split())

Çıktı:

['Dalgalan', 'sen', 'de', 'şafaklar', 'gibi', 'ey', 'şanlı', 'hilâl;', 'Olsun', 'artık', 'dökülen', 'kanlarımın',
 'hepsi', 'helâl.', 'Ebediyen', 'sana', 'yok,', 'ırkıma', 'yok', 'izmihlâl:', 'Hakkıdır,', 'hür', 'yaşamış', 
'bayrağımın', 'hürriyet;', 'Hakkıdır,', 'Hakk’a', 'tapan', 'milletimin', 'istiklâl!']

Yukarıdaki liste halinde Counter içerisine yazılırısa;

print(Counter(istiklalMarsi.split()))

Çıktı:

Counter({'Hakkıdır,': 2, 'Dalgalan': 1, 'sen': 1, 'de': 1, 'şafaklar': 1, 'gibi': 1, 'ey': 1, 'şanlı': 1, 'hilâl;': 1, 
'Olsun': 1, 'artık': 1, 'dökülen': 1, 'kanlarımın': 1, 'hepsi': 1, 'helâl.': 1, 'Ebediyen': 1, 'sana': 1, 'yok,': 1, 
'ırkıma': 1, 'yok': 1, 'izmihlâl:': 1, 'hür': 1, 'yaşamış': 1, 'bayrağımın': 1, 'hürriyet;': 1, 'Hakk’a': 1, 'tapan': 1,
 'milletimin': 1, 'istiklâl!': 1})

En çok geçen kelimenin ne olduğunu görmek için ise;

Counter(istiklalMarsi.split()).most_common(1)

Çıktı:

[('Hakkıdır,', 2)]
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.