Python Örnekli Koleksiyonlardaki Sayaç

⚡ Akıllı Özet

Python Counter, yinelenebilir bir nesnede her öğenin ne sıklıkla göründüğünü sayan, `collections` modülünden bir sözlük alt sınıfıdır. Dizeleri, listeleri, demetleri ve sözlükleri kabul eder ve hızlı sayma görevleri için aritmetik, en sık görülen ve güncelleme işlemlerini destekler.

  • 🔢 sayma: Sayaç, her bir öğenin kaç kez geçtiğini sayar ve bunları anahtar-sayı çiftleri olarak döndürür.
  • 📥 Herhangi bir yinelenebilir nesne: Giriş olarak metin dizeleri, listeler, demetler ve sözlükler kabul eder.
  • Aritmetik: Sayaçlar toplama ve çıkarma işlemlerini destekler.tracBirleşme, kesişim ve birleşme işlemleri.
  • ???? en_yaygın(): Bu yöntem, en yüksek frekanslı öğeleri sıralı olarak döndürür.
  • 🔄 Güncelleme: update() ve alttract() fonksiyonu, başka bir sayaçtan veya yinelenebilir nesneden gelen sayımları ayarlar.
  • 🤖 Yapay zekâ yardımı: Yapay zekâ asistanları, sayaç kodu oluşturur ve bunu frekans ve kelime sayımı görevleri için önerir.

Python Koleksiyonlardaki Sayaç

Nedir? Python Tezgah?

Python Sayaç, kapta bulunan öğelerin her birinin sayısını tutacak bir kaptır. Sayaç, sözlük sınıfının içinde bulunan bir alt sınıftır.

Sayaç, sözlük sınıfının içinde bulunan bir alt sınıftır. kullanarak Python Sayaç aracını kullanarak karma tablo nesnesi olarak da adlandırılan bir nesnedeki anahtar/değer çiftlerini sayabilirsiniz.

Neden kullanım Python Tezgah?

İşte, kullanılmasının başlıca nedenleri Python 3 Sayaç:

  • Sayaç, tıpkı hashable nesneler gibi verileri sırasız bir koleksiyonda tutar. Buradaki öğeler anahtarları ve sayıyı değer olarak temsil eder.
  • Tekrarlanabilir bir listedeki öğeleri saymanıza olanak tanır.
  • Toplama, çıkarma gibi aritmetik işlemlertracBir sayıcı üzerinde birleştirme, kesişme ve birleşim işlemleri kolaylıkla gerçekleştirilebilir.
  • Bir Sayaç başka bir sayaçtaki öğeleri de sayabilir

Giriş Python sayaç

Python Sayaç girdi olarak hepsi yinelenebilir nesneler olan bir liste, tuple, sözlük, dize alır ve size her öğenin sayısını içeren çıktı verir.

Sözdizimi:

Counter(list)

Aşağıdaki listeyi düşünün:

list1 = ['x','y','z','x','x','x','y', 'z']

Listede x, y ve z öğeleri bulunmaktadır. Bu listede Counter'ı kullandığınızda x, y ve z'nin kaç kez mevcut olduğunu sayar. Liste1'de sayaç kullanılıyorsa çıktı şöyle olmalıdır:

Counter({'x': 4, 'y': 2, 'z': 2})

Yani x'i 4, y'yi 2 ve z'yi 2 olarak saydık.

Counter'ı kullanmak için önce aşağıdaki örnekte gösterildiği gibi onu içe aktarmamız gerekir:

from collections import Counter

Burada Counter modülünün çalışmasını gösteren basit bir örnek verilmiştir.

from collections import Counter
list1 = ['x','y','z','x','x','x','y', 'z']
print(Counter(list1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Dizeli Sayaç

In Python, her şey bir nesnedir ve dize de bir nesnedir. Python dizi karakterleri çift tırnak içine alarak kolayca oluşturulabilir. Python bir karakter türünü desteklemez. Bunlar bir uzunluktaki dizeler olarak ele alınır ve aynı zamanda bir alt dize olarak da kabul edilir.

Aşağıdaki örnekte Counter'a bir string aktarılmıştır. Anahtarın öğe ve değerin sayım olduğu anahtar/değer çiftiyle birlikte sözlük biçimini döndürür. Ayrıca alanı bir öğe olarak kabul eder ve dizedeki boşlukların sayısını verir.

Örnek:

from collections import Counter
my_str = "Welcome to Guru99 Tutorials!"
print(Counter(my_str))

Çıktı:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Listeli Sayaç

Liste, elemanları köşeli parantez içinde bulunan yinelebilir bir nesnedir.

Listedeki öğeler Sayaca verildiğinde hash tablosu nesnelerine dönüştürülecek, burada öğeler anahtar haline gelecek ve değerler verilen listedeki öğelerin sayısı olacaktır.

Örneğin ['x','y','z','x','x','x','y','z']. Listeye Sayaç'ı verdiğinizde, listedeki her bir öğenin sayısını size verecektir.

from collections import Counter
list1 = ['x','y','z','x','x','x','y','z']
print(Counter(list1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Sözlüklü Sayaç

Bir sözlük, elemanlarını anahtar/değer çifti olarak içerir ve bunlar süslü parantez içinde yazılır.

Sözlük Sayaç'a verildiğinde, öğelerin anahtar haline geleceği karma tablo nesnelerine dönüştürülecek ve değerler, verilen sözlükteki öğelerin sayısı olacaktır.

Örneğin: {'x': 4, 'y': 2, 'z': 2, 'z': 2}. Sayaç işlevi, verilen sözlükteki her bir anahtarın sayısını bulmaya çalışacaktır.

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2, 'z': 2}
print(Counter(dict1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Tuple'lı Sayaç

Tuple, yuvarlak parantez içinde virgülle ayrılmış nesnelerin bir koleksiyonudur. Counter, verilen tuple'daki her bir öğenin sayısını verecektir.

Demet Sayaca verildikten sonra, öğelerin anahtar haline geleceği ve değerlerin verilen demetteki öğelerin sayısı olacağı hash tablosu nesnesine dönüştürülecektir.

from collections import Counter
tuple1 = ('x','y','z','x','x','x','y','z')
print(Counter(tuple1))

Çıktı:

Counter({'x': 4, 'y': 2, 'z': 2})

Sayaçlara Erişim, Başlatma ve Güncelleme

Sayaç Başlatılıyor

Bir Sayaç, aşağıda gösterildiği gibi dize değeri, liste, sözlük veya tuple geçirilerek başlatılabilir:

from collections import Counter
print(Counter("Welcome to Guru99 Tutorials!"))   #using string
print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list
print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary
print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple

Ayrıca aşağıda gösterildiği gibi boş bir Sayacı başlatabilirsiniz:

from collections import Counter
_count = Counter()

Sayaç Güncelleniyor

update() yöntemini kullanarak Sayaca değer ekleyebilirsiniz.

_count.update('Welcome to Guru99 Tutorials!')

Son kod:

from collections import Counter
_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print(_count)

Çıktı:

Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
 'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})

Sayaca Erişim

Sayaçtan değerleri almak için aşağıdakileri yapabilirsiniz:

from collections import Counter

_count = Counter()
_count.update('Welcome to Guru99 Tutorials!')
print('%s : %d' % ('u', _count['u']))
print('\n')
for char in 'Guru':
    print('%s : %d' % (char, _count[char]))

Çıktı:

u : 3

G : 1
u : 3
r : 2
u : 3

Sayaçtan Bir Elemanı Silmek

Counter'dan bir öğeyi silmek için aşağıdaki örnekte gösterildiği gibi del'i kullanabilirsiniz:

Örnek:

from collections import Counter
dict1 =  {'x': 4, 'y': 2, 'z': 2}
del dict1["x"]
print(Counter(dict1))

Çıktı:

Counter({'y': 2, 'z': 2})

Aritmetik işlem Python sayaç

Toplama, çıkarma gibi aritmetik işlemler.tracBir sayaç üzerinde, aşağıdaki örnekte gösterildiği gibi, kesişim, birleştirme ve birleştirme işlemleri yapılabilir:

Örnek:

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 2, 'z': -2})

counter2 = Counter({'x1': -12, 'y': 5, 'z':4 })

#Addition
counter3 = counter1 + counter2 # only the values that are positive will be returned.

print(counter3)

#Subtraction
counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output

print(counter4)

#Intersection
counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2

print(counter5)

#Union
counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2

print(counter6)

Çıktı:

Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})

Mevcut Yöntemler Python sayaç

Counter'da bazı önemli yöntemler mevcut, işte bunların listesi:

  • elementler() : Bu yöntem size sayı > 0 olan tüm öğeleri döndürür. Sayısı 0 veya -1 olan öğeler döndürülmeyecektir.
  • most_common(değer): Bu yöntem size Sayaç listesindeki en yaygın öğeleri döndürecektir.
  • alttracT(): Bu yöntem, öğeleri başka bir Sayaçtan çıkarmak için kullanılır.
  • güncelleme(): Bu yöntem, başka bir Sayaçtaki öğeleri güncellemek için kullanılır.

Örnek: elementler()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0})

_elements = counter1.elements() # will give you all elements with positive value and count>0
for a in _elements:
    print(a)

Çıktı:

x
x
x
x
x
y
y

Örnek: most_common(value)

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next.
print(common_element)

common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element.
print(common_element1)

Çıktı:

 [('y', 12), ('x', 5)]
[('y', 12), ('x', 5), ('x1', 0), ('z', -2)]

Örnek: alttracT()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})

counter1.subtract(counter2)
print(counter1)

Çıktı:

Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})

Örnek: güncelleme()

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
counter2 = Counter({'x': 2, 'y':5})
counter1.update(counter2)
print(counter1)

Çıktı:

Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})

Sayımları Yeniden Atama Python

Sayaç sayılarını aşağıda gösterildiği gibi yeniden atayabilirsiniz:

Şu şekilde bir sözlüğünüz olduğunu düşünün: {'x': 5, 'y': 12, 'z': -2, 'x1':0}

Öğenin sayısını aşağıda gösterildiği gibi değiştirebilirsiniz:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

counter1['y'] = 20

print(counter1)

Çıktı: Çalıştırdıktan sonra y sayısının 12'den 20'ye değiştiğini göreceksiniz.

Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})

Sayacı kullanarak Öğe sayısını alma ve ayarlama

Counter'ı kullanarak bir öğenin sayısını almak için aşağıdakileri yapabilirsiniz:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})
print(counter1['y']) # this will give you the count of element 'y'

Çıktı:

12

Öğenin sayısını ayarlamak için aşağıdakileri yapabilirsiniz:

from collections import Counter
counter1 =  Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0})

print(counter1['y'])

counter1['y'] = 20
counter1['y1'] = 10

print(counter1)

Çıktı:

12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})

SSS

Counter, hashlenebilir öğeleri otomatik olarak sayan ve eksik anahtarlar için KeyError hatası vermek yerine 0 döndüren bir sözlük alt sınıfıdır. Düz bir sözlük, manuel sayma mantığı gerektirir ve eksik anahtarlar için KeyError hatası verir.

most_common(n) fonksiyonu, en sık kullanılan öğeden en az kullanılan öğeye doğru sıralanmış, en yüksek sayıya sahip n öğeyi (öğe, sayı) ikilileri olarak döndürür. Argüman olmadan çağrıldığında, sayıya göre sıralanmış her öğeyi döndürür.

alttract() fonksiyonu, sıfır ve negatif sayıları çıkardıktan sonra sayımı korur ve sayacı yerinde değiştirir. Eksi operatörü yeni bir sayaç döndürür ve sonucu sıfır veya negatif olan tüm elemanları atar.

Evet. Öncelikle metni bölün, örneğin Counter(sentence.split()) kullanarak tüm kelimeleri sayabilirsiniz. Ham bir dize geçirmek, kelimeler yerine boşluklar da dahil olmak üzere tek tek karakterleri sayar.

Her sayımı toplamak için sum(counter.values()) veya Counter.total() kullanın. Python 3.10 ve sonrası. Bu, sayacın toplamda saydığı eleman sayısını verir.

Sayaç, __missing__ özelliğini geçersiz kılar, bu nedenle eksik olan herhangi bir öğe 0 sayısını bildirir. Bu, yeni anahtarları artırmanıza ve öğelerin var olup olmadığını önceden kontrol etmeden güvenli bir şekilde sorgulamanıza olanak tanır.

Yapay zekâ asistanları, frekans analizi için Counter kodu üretir, manuel döngüler yerine Counter kullanımını önerir ve most_common ve elements gibi yöntemleri açıklar. Ayrıca sayma mantığını daha temiz ve daha hızlı, koleksiyon tabanlı koda dönüştürürler.

Evet. GitHub Copilot, amacınızı açıklayan bir yorumdan Counter, defaultdict ve OrderedDict kalıplarını otomatik olarak tamamlar. Agentic AI araçları, manuel sayma döngülerini Counter çağrılarına dönüştürür ve dosya genelinde testler ekler.

Bu yazıyı şu şekilde özetleyin: