Jak policzyć elementy listy w Pythonie, czyli Dictionary, Counter i hash

8 stycznia 2023

Jak policzyć elementy listy w Pythonie - Python Dictionary Counter

Słowniki (ang. dictionaries) w Pythonie to rodzaj kolekcji, która przechowuje pary klucz-wartość. Można je wykorzystać do liczenia elementów listy, jeśli elementy te są hashowalne (tj. można je używać jako klucze w słowniku). Jak policzyć elementy listy w Pythonie? Jak działa taki „Python Dictionary Counter”? Zobaczmy!

Jak policzyć elementy listy w Pythonie – użycie słownika

Oto przykład, jak użyć słownika do zliczenia, ile razy każdy element z listy some_random_list występuje:

dictionary_with_counter = {}
for element in some_random_list:
    if element in dictionary_with_counter:
        dictionary_with_counter[element] += 1
    else:
        dictionary_with_counter[element] = 1


W powyższym kodzie tworzymy pusty słownik dictionary_with_counter i iterujemy przez każdy element listy (więcej o listach np. tu btw) some_random_list. Jeśli dany element już istnieje jako klucz w słowniku dictionary_with_counter, to inkrementujemy jego wartość o 1. W przeciwnym razie tworzymy nowy klucz z daną wartością i ustawiamy jego wartość na 1.

Po zakończeniu pętli słownik dictionary_with_counter będzie zawierał informację, ile razy każdy element z listy some_random_list wystąpił. Na przykład, jeśli some_random_list to [1, 2, 3, 3, 3, 4, 4, 4, 4], to słownik dictionary_with_counter będzie wyglądał następująco: {1: 1, 2: 1, 3: 3, 4: 4}.

Python Counter

Można także użyć wbudowanej funkcji Counter z biblioteki collections, aby uzyskać podobny efekt bez konieczności pisania całego kodu samodzielnie. Funkcja Counter przyjmuje iterowalny obiekt (np. listę) i zwraca słownik zliczający ilość wystąpień poszczególnych elementów. Oto przykład jej użycia:

from collections import Counter
dictionary_with_counter = Counter(some_random_list)


Słownik dictionary_with_counter będzie miał takie same klucze i wartości jak w poprzednim przykładzie.

Hash, hashowalny element, czyli co?

Elementem listy, który nie jest hashowalny, jest na przykład lista. Listy w Pythonie nie są hashowalne, ponieważ ich zawartość może być zmieniana dynamicznie. Innymi elementami, które również nie są hashowalne, są na przykład słowniki i obiekty klas.

Oto przykład listy zawierającej elementy, które są i nie są hashowalne:

some_random_list = [1, 3.14, "Napis", [1, 2, 3], {"klucz": "wartość"}]

Elementy 1, 3.14 i „Napis” są hashowalne i mogą być użyte jako klucze w słowniku. Natomiast elementy [1, 2, 3] i {„klucz”: „wartość”} nie są hashowalne i nie mogą być użyte jako klucze w słowniku.

To jak w końcu policzyć elementy listy w Pythonie? Jakiś Python Dictionary Counter?! 😀

Nie, masz 2 opcje. Albo słownik, albo Counter 🙂

Słowniki w Pythonie mogą być wykorzystane do liczenia elementów listy, jeśli elementy te są hashowalne (tj. mogą być używane jako klucze w słowniku). Można to zrobić poprzez iterowanie przez listę i inkrementowanie odpowiedniej wartości w słowniku dla każdego elementu lub przez użycie wbudowanej funkcji Counter z biblioteki collections, która zwraca słownik zliczający ilość wystąpień poszczególnych elementów.

Python, python, python – a Tableau ogarniasz? Jak ładne wykresy zrobisz?

To tyle w tym temacie. Analizujcie w pokoju!  

Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego 
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych 
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości

Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube

Inne ciekawe artykuły:

Ja Ci ją z przyjemnością wyślę. Za darmo. Bez spamu.

Poradnik Początkującego Analityka

Video - jak szukać pracy w IT

Regularne dawki darmowej wiedzy, bez spamu.

Zgadzam się na przetwarzanie moich danych osobowych przez KajoData Kajo Rudziński w celu realizacji usługi newsletter, a tym samym wysyłania mi informacji o produktach blogowych, usługach, lub nowościach, zgodnie z polityką prywatności. Wiem, że zgodę tę mogę w każdej chwili cofnąć.

Please wait...

Dziękujemy za zapis!