P8

***Słowniki***

Słownik jest modyfikowalną strukturą danych w układzie klucz:wartość. Słownik nie jest indeksowany, tzn. nie ma określonej kolejności par k:w.
Słownik może zawierać mieszane typy danych. Należy pamiętać, że klucze muszą być unikatowe.

**Deklaracja słownika**

slownik ={} - utworzenie pustego słownika

slownik = {klucz1:wartość1, klucz2:wartość2, kluczN:wartośćN} - utworzenie słownika n-elementowego)

np.

uczen={ 'imie':'Adam', 'nazwisko':'Kowalski', 'klasa':'3a', 'wiek':18}


** Dostęp do słownika**

print(uczen)                        #wyświetli cały słownik


print(uczen['imie'])                #dostęp do słownika poprzez podanie klucza

print(uczen.get('imie'))             #dostęp do słownika poprzez metodę get uodparnia program na pobranie klucza, który nie istnieje

np.


print(uczen['imie'] )                                    #wypisze Adam
print(uczen['imiee'] )                                   #nastąpi błąd programu - KeyError: 'imiee'
print(uczen.get('imie') )                                #wypisze Adam
print(uczen.get('imiee'))                                #wypisz None - brak
print(uczen.get('imiee','Nie ma takiej wartości'))       #wypisze - Nie ma takiej wartości 

** Dodawanie nowej pary klucz:warość**

nowyklucz=input('podaj nowy klucz')                    

nowawartosc=input('podaj warosc do klucza')
uczen[nowyklucz]=nowawartosc

UWAGA! - istnieje ryzyko podmiany istniejącej pary k:w, dlatego warto się zabezpieczyć:

np. 
nowyklucz=input('podaj nowy klucz') 
if nowyklucz not in uczen:                              #sprawdza, czy ten klucz już nie istnieje                 
                       
    nowawartosc=input('podaj warosc do klucza')
    uczen[nowyklucz]=nowawartosc
else:
    print('Ten klucz już istnieje')


** Zmiana pary klucz:warość**

Zmiana pary, podobna jest do dodawania nowych elementów do słownika, w tym wypadku od razu zastosujemy if'a do sprawdzenia, czy dana para istnieje.

klucz=input('podaj klucz do wartości, którą chcesz podmienić')                    

if klucz in uczen:                              #sprawdza, czy ten klucz już istnieje                 
                       
    nowawartosc=input('podaj warosc do klucza')
    uczen[klucz]=nowawartosc
else:
    print('Ten klucz nie istnieje')
 
** Usunięcie par klucz:wartość***

Podobnie jak wyżej przykład realizuje obsługę błędu.

klucz=input('podaj klucz, który chcesz usunąć')                    

if klucz in uczen:                              #sprawdza, czy ten klucz już istnieje                 
   del uczen[klucz]
   print('usunąłem dane powiązane z kluczem: ', klucz)                    
   
else:
    print('Ten klucz nie istnieje')

** Pozostałe metody słowników**

uczen2=uczen.copy()                             #kopiuje zawartość słownika uczen do słownika uczen2
uczen2.update(uczen)                            #aktualizacja słownika uczen2 zawartością słownika uczen - dopisuje nieistniejace i nadpisuje istniejące
print(uczen.pop('imie'))                        #wyświetla i usuwa klucz imie
uczen.keys()                                    #tworzy krotkę z istniejących kluczy
uczen.values()                                  #tworzy krotkę z istniejących wartości
uczen.items()                                   #tworzy dwuskładnikowe krotki w układzie (k:w)
uczen.clear()                                   #czyści cały słownik

del uczen                                       #usuwa cały słownik