Programming4Fun

Programming4Fun - programujemy z pasją :)

  • Nie jesteś zalogowany.

Ogłoszenie


#1 2014-07-10 22:07:45

 Hoguzzos

http://winclub.pl/public/style_extra/team_icons/mod.png

Skąd: Za górami za lasami :D
Zarejestrowany: 2014-07-09
Posty: 56
Punktów :   

Kurs Pythona. Część 7.

ŹRÓDŁO : http://szgrabowski.kis.p.lodz.pl/Python-podstawy.html
Słowniki.
To jedna z fajniejszych rzeczy w Pythonie: bardzo wygodna w obsłudze tablica asocjacyjna (inne funkcjonujące nazwy: słownik, hash, mapa...).  W odróżnieniu od zwykłych tablic (czyli np. znanej nam już listy w Pythonie), do elementów tablicy asocjacyjnej odwołujemy się przez klucz, który może być dość dowolnego typu.  W zwykłej tablicy elementy były indeksowane kolejnymi intami – tu jest wolna amerykanka.  Klasyczne zastosowanie to książka telefoniczna:

Kod:

 

ksiazka_tel = {}   # te klamerki oznaczają słownik, typ dict

ksiazka_tel["Hamlet"] = 619433156

ksiazka_tel["Ofelia"] = 539991474

print ksiazka_tel["Ofelia"]

print ksiazka_tel["Horacy"]  # klucz nieznany!

ksiazka_tel["Borewicz"] = 997

 

for (k, v) in ksiazka_tel.items():    #  k-key, v-value (oczywiście można nazwać inaczej)

  print k, "ma telefon o numerze", v

Ale najprościej wyświetlić cały słownik po prostu tak:

Kod:

ksiazka_tel  # albo print ksiazka_tel, jeśli nie w trybie interaktywnym

Borewicz dostał służbową komórkę?  No to zmieniamy:

Kod:

ksiazka_tel["Borewicz"] = 617555321

print ksiazka_tel["borewicz"]  # ops, błąd!  Małe i duże litery rozróżnialne

Sprawdźmy, czy w międzyczasie Horacy nie dorobił się telefonu:

Kod:

  if "Horacy" in ksiazka_tel:

    print "Już jest!  Jego numer to", ksiazka_tel["Horacy"]

Tu nam się nie udało, ale zmieńmy Horacego np. na Hamleta.



Czy w obrębie jednego słownika mogą być klucze (a także skojarzone wartości) różnych typów?  Pachnie szaleństwem, ale tak!

Wypróbuj przykłady, żebyś dobrze zapamiętał, czego nie powinieneś robić:

Kod:

ksiazka_tel[(255,0,0)] = "czerwony"

ksiazka_tel["W tym szaleństwie jest metoda"] = True

ksiazka_tel[608] = [60801, 60804, 60802, 60899]

Czasem od razu chcemy słownik czymś zainicjować.  Najprościej tak:

Kod:

kolory = { "czerwony": (255,0,0), "niebieski": (0,0,255), "zielony": (0,255,0), "biały": (255,255,255) }

Powiedzmy, że mamy także słownik

Kod:

kolory2 = {"czerwony": (200, 0,0), "czarny": (0,0,0)}

Chcemy zaktualizować stary słownik; robi się to tak:

Kod:

kolory.update(kolory2)

Sprawdź, że nic ze słownika kolory nie wypadło, natomiast zmieniła się (została nadpisana) wartość skojarzona z kluczem „czerwony”, a także doszedł klucz „czarny”.  Oczywiście kolory2 się nie zmienił.



Oto przykłady dalszych metod, które możemy wywołać dla słownika d:

Kod:

d.keys() // zwraca listę kluczy

d.values() # zwraca listę kluczy

d.clear() # czyści cały słownik (ale zmiennej d nie usuwa)

d.copy() # zwraca kopię d (d_kopia = d.copy() tworzy „niezależną” kopię, d_kopia = d byłoby tylko skopiowaniem referencji i każda zmiana d pociągałaby zmianę d_kopia)

Usunięcie klucza "abc":

Kod:

del d["abc"]  # KeyError, jeśli próbujemy usunąć coś, czego w słowniku nie ma

Co jeszcze warto wiedzieć?  Wartościami (ale nie kluczami) słownika mogą być nawet inne słowniki.  Utwórzmy więc coś, co można by szumnie nazwać małą obiektową bazą danych:

Kod:

znajomi = { "Wojtek": { "tel": 487133, "miasto": "Zgierz", "ulica": "Zachlapana 14" }, \

  "Ola": { "tel": 604111265, "miasto": "Opole", "ulica": "Krótka 1" }, \

  "Sebastian": { "tel": 608726122, "miasto": "Tarnowskie Góry", "ulica": "Knutha 34" } }

print znajomi["Ola"]["miasto"]

http://img208.imageshack.us/img208/623/mnd1.jpg
http://images.cooltext.com/3860851.png

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi

[ Generated in 0.066 seconds, 8 queries executed ]


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.djronnie.pun.pl www.chemiaumcs.pun.pl www.sgaming.pun.pl www.talesofshinobi.pun.pl www.akatsukifreinds.pun.pl