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:
