Kurs: Darmowy kurs Python dla początkujących
Lekcja 6: Słowniki i zbiory
Tworzenie i operacje na słownikach
Słowniki (ang. dictionaries) to struktury danych w Pythonie, które przechowują pary klucz-wartość. Każdy klucz w słowniku musi być unikalny i niemodyfikowalny (np. liczby, stringi, krotki), natomiast wartości mogą być dowolnego typu. Słowniki są bardzo przydatne, gdy chcemy przechowywać dane w sposób umożliwiający szybki dostęp za pomocą kluczy.
1. Tworzenie słownika
Słownik można utworzyć za pomocą nawiasów klamrowych {}
, gdzie klucze i odpowiadające im wartości oddzielamy dwukropkiem (:
), a kolejne pary klucz-wartość oddzielamy przecinkami:
# Tworzenie słownika slownik = { "imie": "Anna", "wiek": 25, "miasto": "Kraków" } print(slownik)
Możemy również użyć funkcji dict()
do stworzenia słownika:
# Tworzenie słownika za pomocą dict() slownik = dict(imie="Anna", wiek=25, miasto="Kraków") print(slownik)
2. Dostęp do wartości
Aby uzyskać wartość z słownika, używamy klucza w nawiasach kwadratowych lub metody get()
:
# Dostęp do wartości slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} print(slownik["imie"]) # Wynik: Anna print(slownik.get("wiek")) # Wynik: 25
Jeśli spróbujesz uzyskać dostęp do klucza, który nie istnieje, użycie nawiasów kwadratowych spowoduje błąd, natomiast metoda get()
zwróci None
:
# Obsługa brakującego klucza print(slownik.get("adres")) # Wynik: None
3. Dodawanie i modyfikowanie elementów
Możesz dodać nowy element do słownika, przypisując wartość do nowego klucza, lub zmodyfikować istniejący klucz, przypisując mu nową wartość:
# Dodawanie i modyfikowanie elementów slownik = {"imie": "Anna", "wiek": 25} # Dodawanie nowego klucza slownik["miasto"] = "Kraków" print(slownik) # Wynik: {'imie': 'Anna', 'wiek': 25, 'miasto': 'Kraków'} # Modyfikowanie istniejącego klucza slownik["wiek"] = 26 print(slownik) # Wynik: {'imie': 'Anna', 'wiek': 26, 'miasto': 'Kraków'}
4. Usuwanie elementów
Python oferuje kilka sposobów usuwania elementów ze słownika:
pop()
– Usuwa element o określonym kluczu i zwraca jego wartość.popitem()
– Usuwa ostatnio dodany element (w Pythonie 3.7+).del
– Usuwa element o określonym kluczu lub cały słownik.clear()
– Usuwa wszystkie elementy ze słownika.
Przykłady:
# Usuwanie elementów slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} # Usuwanie za pomocą pop() wiek = slownik.pop("wiek") print(wiek) # Wynik: 25 print(slownik) # Wynik: {'imie': 'Anna', 'miasto': 'Kraków'} # Usuwanie za pomocą popitem() ostatni = slownik.popitem() print(ostatni) # Wynik: ('miasto', 'Kraków') print(slownik) # Wynik: {'imie': 'Anna'} # Usuwanie za pomocą del del slownik["imie"] print(slownik) # Wynik: {} # Usuwanie wszystkich elementów slownik.clear() print(slownik) # Wynik: {}
5. Sprawdzanie obecności klucza
Aby sprawdzić, czy dany klucz istnieje w słowniku, możesz użyć operatora in
:
# Sprawdzanie obecności klucza slownik = {"imie": "Anna", "wiek": 25} print("imie" in slownik) # Wynik: True print("adres" in slownik) # Wynik: False
6. Długość słownika
Funkcja len()
pozwala sprawdzić liczbę elementów w słowniku:
# Liczba elementów w słowniku slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} print(len(slownik)) # Wynik: 3
7. Kopiowanie słownika
Możesz skopiować słownik, aby pracować na jego kopii zamiast na oryginalnym obiekcie. Python oferuje metodę copy()
:
# Kopiowanie słownika slownik = {"imie": "Anna", "wiek": 25} kopia = slownik.copy() print(kopia) # Wynik: {'imie': 'Anna', 'wiek': 25}
8. Przydatne metody słowników
Słowniki w Pythonie oferują wiele przydatnych metod:
keys()
– Zwraca wszystkie klucze w słowniku.values()
– Zwraca wszystkie wartości w słowniku.items()
– Zwraca wszystkie pary klucz-wartość jako krotki.
# Metody słowników slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} print(slownik.keys()) # Wynik: dict_keys(['imie', 'wiek', 'miasto']) print(slownik.values()) # Wynik: dict_values(['Anna', 25, 'Kraków']) print(slownik.items()) # Wynik: dict_items([('imie', 'Anna'), ('wiek', 25), ('miasto', 'Kraków')])
Iteracja po słownikach
W Pythonie słowniki są strukturami, które przechowują dane w postaci par klucz-wartość. Bardzo często potrzebujemy przechodzić przez wszystkie klucze, wartości lub całe pary klucz-wartość w słowniku. Python oferuje wiele prostych sposobów na iterację po słownikach.
1. Iteracja po kluczach
Domyślnie, iterując po słowniku za pomocą pętli for
, uzyskujemy dostęp do jego kluczy:
# Iteracja po kluczach slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} for klucz in slownik: print(klucz)
Wynik:
imie wiek miasto
Aby wyraźnie iterować tylko po kluczach, możesz użyć metody keys()
:
# Iteracja po kluczach za pomocą keys() for klucz in slownik.keys(): print(klucz)
2. Iteracja po wartościach
Jeśli chcesz iterować tylko po wartościach słownika, użyj metody values()
:
# Iteracja po wartościach slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} for wartosc in slownik.values(): print(wartosc)
Wynik:
Anna 25 Kraków
3. Iteracja po parach klucz-wartość
Aby iterować zarówno po kluczach, jak i wartościach, użyj metody items()
, która zwraca każdą parę klucz-wartość jako krotkę:
# Iteracja po parach klucz-wartość slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} for klucz, wartosc in slownik.items(): print(f"{klucz}: {wartosc}")
Wynik:
imie: Anna wiek: 25 miasto: Kraków
4. Iteracja z modyfikacją słownika
W niektórych przypadkach możesz chcieć zmodyfikować wartości w słowniku podczas iteracji. Pamiętaj, że modyfikowanie struktury słownika podczas iteracji może prowadzić do błędów, dlatego najlepiej iterować po kopii kluczy lub wartości:
# Modyfikacja wartości w słowniku slownik = {"Anna": 25, "Jan": 30, "Maria": 35} for klucz in list(slownik.keys()): # Iteracja po kopii kluczy slownik[klucz] += 1 # Zwiększamy wiek o 1 print(slownik)
Wynik:
{'Anna': 26, 'Jan': 31, 'Maria': 36}
5. Sprawdzanie obecności klucza lub wartości podczas iteracji
Podczas iteracji możemy sprawdzać, czy dany klucz lub wartość spełnia określony warunek:
# Sprawdzanie obecności wartości slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} for klucz, wartosc in slownik.items(): if wartosc == "Anna": print(f"Znaleziono klucz '{klucz}' z wartością '{wartosc}'")
Wynik:
Znaleziono klucz 'imie' z wartością 'Anna'
6. Iteracja z funkcją enumerate()
Jeśli chcesz uzyskać indeks każdej iteracji, możesz użyć funkcji enumerate()
w połączeniu z metodami słowników:
# Iteracja z enumerate() slownik = {"imie": "Anna", "wiek": 25, "miasto": "Kraków"} for indeks, (klucz, wartosc) in enumerate(slownik.items()): print(f"Indeks: {indeks}, Klucz: {klucz}, Wartość: {wartosc}")
Wynik:
Indeks: 0, Klucz: imie, Wartość: Anna Indeks: 1, Klucz: wiek, Wartość: 25 Indeks: 2, Klucz: miasto, Wartość: Kraków
7. Iteracja po zagnieżdżonych słownikach
Słowniki mogą przechowywać inne słowniki jako wartości. W takich przypadkach iteracja wymaga odwoływania się do zagnieżdżonych struktur:
# Iteracja po zagnieżdżonych słownikach zagniezdzony = { "Anna": {"wiek": 25, "miasto": "Kraków"}, "Jan": {"wiek": 30, "miasto": "Warszawa"} } for osoba, dane in zagniezdzony.items(): print(f"Dane dla {osoba}:") for klucz, wartosc w dane.items(): print(f" {klucz}: {wartosc}")
Wynik:
Dane dla Anna: wiek: 25 miasto: Kraków Dane dla Jan: wiek: 30 miasto: Warszawa
Zbiory i ich zastosowania
Zbiory (ang. sets) to struktury danych w Pythonie, które przechowują unikalne elementy, bez zachowania ich kolejności. Zbiory są bardzo wydajne w operacjach takich jak sprawdzanie obecności elementu, usuwanie duplikatów czy wykonywanie operacji matematycznych na zbiorach (suma, różnica, część wspólna).
1. Tworzenie zbiorów
Zbiory można tworzyć za pomocą nawiasów klamrowych {}
lub funkcji set()
. Elementy w zbiorze muszą być niemodyfikowalne (np. liczby, stringi, krotki), a duplikaty są automatycznie usuwane:
# Tworzenie zbiorów zbior = {1, 2, 3, 4, 5} print(zbior) # Wynik: {1, 2, 3, 4, 5} # Zbiór z duplikatami zbior = {1, 2, 2, 3, 4, 4, 5} print(zbior) # Wynik: {1, 2, 3, 4, 5} # Tworzenie pustego zbioru pusty_zbior = set() print(pusty_zbior) # Wynik: set()
2. Dodawanie i usuwanie elementów
Zbiory są modyfikowalne, co oznacza, że możesz dodawać lub usuwać elementy:
add()
– Dodaje pojedynczy element do zbioru.update()
– Dodaje wiele elementów do zbioru.remove()
– Usuwa określony element; jeśli element nie istnieje, zgłasza błąd.discard()
– Usuwa określony element; jeśli element nie istnieje, nie zgłasza błędu.pop()
– Usuwa i zwraca losowy element ze zbioru.clear()
– Usuwa wszystkie elementy ze zbioru.
# Dodawanie i usuwanie elementów zbior = {1, 2, 3} zbior.add(4) # Dodajemy pojedynczy element print(zbior) # Wynik: {1, 2, 3, 4} zbior.update([5, 6]) # Dodajemy wiele elementów print(zbior) # Wynik: {1, 2, 3, 4, 5, 6} zbior.remove(3) # Usuwamy element 3 print(zbior) # Wynik: {1, 2, 4, 5, 6} zbior.discard(10) # Usuwanie nieistniejącego elementu (bez błędu) print(zbior) # Wynik: {1, 2, 4, 5, 6} element = zbior.pop() # Usunięcie losowego elementu print(f"Usunięto: {element}") print(zbior) zbior.clear() # Usunięcie wszystkich elementów print(zbior) # Wynik: set()
3. Operacje na zbiorach
Zbiory w Pythonie obsługują wiele operacji matematycznych, które są bardzo przydatne w pracy z danymi:
|
lubunion()
– Suma zbiorów (łączy elementy z obu zbiorów).&
lubintersection()
– Część wspólna zbiorów (elementy obecne w obu zbiorach).-
lubdifference()
– Różnica zbiorów (elementy obecne tylko w jednym zbiorze).^
lubsymmetric_difference()
– Różnica symetryczna (elementy obecne w jednym, ale nie w obu zbiorach).
# Operacje na zbiorach zbior1 = {1, 2, 3, 4} zbior2 = {3, 4, 5, 6} print(zbior1 | zbior2) # Suma: {1, 2, 3, 4, 5, 6} print(zbior1 & zbior2) # Część wspólna: {3, 4} print(zbior1 - zbior2) # Różnica: {1, 2} print(zbior1 ^ zbior2) # Różnica symetryczna: {1, 2, 5, 6}
4. Sprawdzanie podzbiorów i nadzbiorów
Zbiory umożliwiają sprawdzanie, czy jeden zbiór jest podzbiorem lub nadzbiorem innego:
issubset()
– Sprawdza, czy jeden zbiór jest podzbiorem innego.issuperset()
– Sprawdza, czy jeden zbiór jest nadzbiorem innego.
# Podzbiory i nadzbiory zbior1 = {1, 2, 3} zbior2 = {1, 2, 3, 4, 5} print(zbior1.issubset(zbior2)) # Wynik: True print(zbior2.issuperset(zbior1)) # Wynik: True
5. Sprawdzanie obecności elementu
Możesz sprawdzić, czy dany element znajduje się w zbiorze, używając operatora in
:
# Sprawdzanie obecności elementu zbior = {1, 2, 3, 4, 5} print(3 in zbior) # Wynik: True print(10 in zbior) # Wynik: False
6. Usuwanie duplikatów z list za pomocą zbiorów
Jednym z najczęstszych zastosowań zbiorów jest usuwanie duplikatów z listy:
# Usuwanie duplikatów lista = [1, 2, 2, 3, 4, 4, 5] zbior = set(lista) # Konwersja listy na zbiór lista_bez_duplikatow = list(zbior) # Konwersja z powrotem na listę print(lista_bez_duplikatow) # Wynik: [1, 2, 3, 4, 5]
7. Wydajność zbiorów
Zbiory są bardzo wydajne w operacjach takich jak sprawdzanie obecności elementu, ponieważ używają tabeli mieszającej (ang. hash table) do szybkiego wyszukiwania. Dlatego są szczególnie przydatne w dużych zbiorach danych.
Następna lekcja ==> Instrukcje warunkowe
Spis Treści - darmowy kurs Python dla początkujących
Lekcja 1: Wprowadzenie do programowania
- Co to jest programowanie?
- Dlaczego warto uczyć się Pythona?
- Instalacja Python i wprowadzenie do edytorów (IDLE, VS Code).
Lekcja 2: Pierwszy program w Pythonie
- Składnia Pythona.
- Wyświetlanie tekstu (funkcja print).
- Komentarze i ich znaczenie.
Lekcja 3: Podstawowe typy danych
- Liczby: int, float.
- Ciągi znaków (stringi).
- Typ logiczny (boolean).
- Funkcja type.
Lekcja 4: Zmienne i operatory
- Deklaracja i przypisywanie zmiennych.
- Operatory arytmetyczne, porównania, logiczne.
Lekcja 5: Listy i krotki
- Tworzenie list i krotek.
- Indeksowanie, dodawanie, usuwanie elementów.
- Operacje na listach.
Lekcja 6: Słowniki i zbiory
- Tworzenie i operacje na słownikach.
- Iteracja po słownikach.
- Zbiory i ich zastosowania.
Lekcja 7: Instrukcje warunkowe
- Instrukcje if, elif, else.
- Operatory logiczne w praktyce.
Lekcja 8: Pętle
- Pętla for i while.
- Instrukcje break, continue, else w pętlach.
Lekcja 9: Funkcje
- Tworzenie i wywoływanie funkcji.
- Argumenty i wartości domyślne.
- Funkcje anonimowe (lambda).
Lekcja 10: Praca z plikami
- Otwieranie, czytanie i zapisywanie plików.
- Obsługa błędów przy pracy z plikami.
Lekcja 11: Podstawy programowania obiektowego
- Klasy i obiekty.
- Atrybuty i metody.
- Prosty projekt: Zarządzanie listą zadań.
Lekcja 12: Tworzenie prostego kalkulatora
- Łączenie funkcji i warunków.
- Obsługa błędów (try-except).
Lekcja 13: Zarządzanie plikami tekstowymi
- Program do przechowywania i wyszukiwania notatek w plikach.
Lekcja 14: Prosta gra tekstowa w Python
- Wprowadzenie do pętli i logiki gry.
- Interaktywna gra konsolowa, np. zgadywanie liczby.
Jeśli chciałbyś być poinformowany o następnych kursach to zapisz się do naszego newslettera: