Liste içinde her elemanın kaç kere geçtiğini bulma

Herkese merhaba arkadaşlar iyi forumlar. Python yeni başladım ve birkaç gündür sorular soruyorum. Anlamaya çalışıyorum.

Benim elimde bir liste var ve bu liste içerisinde kendini tekrarlayan elemanlar var. Ben bir sözlük içerisinde key değerini eleman ismini value’ye ise kaç kere tekrarladığını yazdırmak istiyorum.

Örnek :

liste = [‘Paris’, ‘London’, ‘Moscow’, ‘London’, ‘Helsinki’,‘London’ ,‘Paris’]

def hesapla(x) fonksiyonuna bu listeyi gönderdiğim zaman almak istediğimiz output:

{‘Paris’: 2, ‘London’: 3,‘Helsinki’: 1, ‘Moscow’; 1}

Hepinize şimdiden teşekkürler arkadaşlar

Merhaba.

>>> from collections import Counter
>>> c = Counter(['Paris', 'London', 'Moscow', 'London', 'Helsinki','London' ,'Paris'])
>>> dict(c)
{'Paris': 2, 'London': 3, 'Moscow': 1, 'Helsinki': 1}
4 Beğeni

Aslında konu başlığını oluşturan kişi bunu modül aracılığı ile değil bunu nasıl yapacagini öğrenmek istiyor.

Eğer etikette algoritma tagi varsa lütfen modül kullanmadan nasıl olusturabilecegimizi gösterin.

Modül kullanmak optimizasyon için önemli olabilir.
Fakat burada amacımız öğrenmek.

Telefondan olduğu kadar yazıp göstermek istedim.

class Calculate(object):
	def __init__(self,list_1):
		self.list_1 = list_1
		self.dict_1 = {y:0 for y in self.list_1}
						
	def calculate(self):
		for x in self.list_1:
			self.dict_1[x] += 1						
		return self.dict_1
		
a = Calculate(["yazbel","yazbel","deneme"]).calculate()

print(a)

#Output:

#a = {"yazbel":2,"deneme":1}

Eğer fonksiyonu sonuna yazmak istemiyorsanız init altına a değişkeni içerisine yazdığımı yazarsanız direk outputu verecektir.

2 Beğeni

Benim verdiğim fonksiyonun koduna bu soruyla ilgilenen herkesin erişebileceğini düşünüyorum, standart kütüphanede sonuçta. Yani bir modülle bunun nasıl yapılabileceğini göstermek isteyenlerin bu modülü inceleyip sıfırdan nasıl yapılacağını öğrenmesini engellemiyor.

Evet buna dikkat etmemiştim, fark etseydim modülü göstermenin yanında ben de basit bir fonksiyon yazardım.


Yazdığınız kodda sınıf kullanmanız gereksiz, bir fonksiyon haline getirebilirsiniz.

1 Beğeni

Farklı durumlar eklenebilir ve attığınız örnekteki gibi olması açısından sınıf kullanmak istedim.

Sadece bu işlemi yapacak bir sınıf olmaz sonuçta ismi calculate.

Teşekkürler.

Ben de şöyle bir örnek veriyim:

from collections import defaultdict

def count_elements(iterable):
    d = defaultdict(int)
    for i in iterable:
        d[i] += 1
    return d

liste = ['Paris', 'London', 'Moscow', 'London', 'Helsinki','London' ,'Paris']
print(count_elements(liste))