Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
PyTraning2.0 #5:
Ssssssssss jak słowniki..
Słowniki, pętle
user_38251
9feSI6ru3na
Zadanie 1
Jakie typy danych tu widzimy?
Dzieci: Ania, Marcin, Sebastian, Weronika, Maks,
Zbyszek, Marysia, Kasia
Prezenty:...
Typy danych
Typy proste
• Całkowity (int)
• Zmiennopozycyjny (float)
• Tesktowy (str)
• Logiczny (bool)
• Zespolony (compl...
Typy danych
Typy proste
• Całkowity (int)
• Zmiennopozycyjny (float)
• Tesktowy (str)
• Logiczny (bool)
• Zespolony (compl...
li = [5,2,1]
li.count(0) li[2]
li.pop()
li[1:-1]
len(li)
2 in li
li.append('A') li.sort()
Przypomnienie
a == [1,3,4]
a = [1,3,4,5]
a == [1,3,4,5,3]
a == [3,5,4,3,1]
a == [3,4,3,1]
a == [1,3,3,4]
a == [1,3,3,4,4]
Przypomnienie
...
a == [1,3,4]
a = [1,3,4,5]
a == [1,3,4,5,3]
a == [3,5,4,3,1]
a == [3,4,3,1]
a == [1,3,3,4]
a == [1,3,3,4,4]
Przypomnienie
...
a == ['A','B','B','c',None,3]
a = ['A','B','c',None,3]
a == ['B','c',None]
a == ['c','c']
a == ['c','c','c']
a == ['c','c'...
a == ['A','B','B','c',None,3]
a = ['A','B','c',None,3]
a == ['B','c',None]
a == ['c','c']
a == ['c','c','c']
a == ['c','c'...
Zadanie 2 – listy, krotki -
powtórka
Pomóż PyMikołajowi zrobić unikatową listę
prezentów w porządku alfabetycznym i rozdzi...
Zadanie 2 – listy, krotki -
powtórka
Pomóż PyMikołajowi zrobić unikatową listę
prezentów w porządku alfabetycznym i rozdzi...
Zadanie 2 – listy, krotki -
powtórka
Pomóż PyMikołajowi zrobić unikatową listę
prezentów w porządku alfabetycznym i rozdzi...
Typy danych
Typy proste
• Całkowity (int)
• Zmiennopozycyjny (float)
• Tesktowy (str)
• Logiczny (bool)
• Zespolony (compl...
Słowniki
 Zmienny (modyfikowalny), nieposortowany zestaw par
klucz:wartość
 Wartością może być dowolny obiekt Pythonowy....
Słowniki
 Słownik tworzymy umieszczając klucz:wartość w
nawiasach klamrowych
 nowy_dict = {klucz1:wartość1, klucz2:warto...
Słowniki – metody i funkcje
>>> slownik = {}
>>> dir(slownik)
['__class__', '__contains__', '__delattr__',
'__delitem__', ...
Stwórz słownik składający się z dwóch par
klucz:wartość – np. imię dziecka i prezent.
Następnie wyświetl prezenty dla dzie...
Stwórz słownik składający się z dwóch par
klucz:wartość – np. imię dziecka i prezent.
Następnie wyświetl prezenty dla dzie...
Pętle służą do powtarzania czynności
Budowa pętli:
Dla czegoś w zbiorze:
zrób określoną czynność
for sth in list/tuple/s...
Pętle - For
Pętle - For
Pętle - For
Pętle - For
Zadanie 4
Narysuj choinkę według poniższych instrukcji
(zapisz instrukcje w pliku choinka.py i go odpal):
tree_element = '...
Zadanie 5
Teraz narysuj choinkę używając pętli for i
poniższej listy:
choinka = [' * ', ' *** ', ' ***** ', '*******']
Zadanie 5
Teraz narysuj choinkę używając pętli for i
poniższej listy:
choinka = [' * ', ' *** ', ' ***** ', '*******']
for...
Zadanie 6
Pomóż Mikołajowi wyświetlić po kolei na ekranie
wszystkie unikatowe prezenty z pierwszej tupli
prezentów razem z...
Zadanie 6
Rower 0
Tablet 1
Zestaw do szycia 2
Szczeniak 3
Szalik 4
Lalka Barbie 5
Pizama 6
Narty 7
Lyzwy 8
Bilet do kina 9...
Zadanie 6
Rower 0
Tablet 1
Zestaw do szycia 2
Szczeniak 3
Szalik 4
Lalka Barbie 5
Pizama 6
Narty 7
Lyzwy 8
Bilet do kina 9...
Zadanie 6
Rower 0
Tablet 1
Zestaw do szycia 2
Szczeniak 3
Szalik 4
Lalka Barbie 5
Pizama 6
Narty 7
Lyzwy 8
Bilet do kina 9...
Zadanie 6
Rower 0
Tablet 1
Zestaw do szycia 2
Szczeniak 3
Szalik 4
Lalka Barbie 5
Pizama 6
Narty 7
Lyzwy 8
Bilet do kina 9...
Zadanie 6.1
>>> for el in range (len(unikatowe_prezenty_1)):
print(unikatowe_prezenty_1[el])
???
>>> n = 0
>>> for el in u...
Zadanie 6.1
??? =
>>> #wszystkie komendy powinny zwrócić
Rower
Tablet
Zestaw do szycia
Szczeniak
Szalik
Lalka Barbie
Pizam...
Zadanie 6.2
>>> for prezent in sorted(set(prezenty)):
print prezent
Dla utrwalenia
Jeśli chcemy wyświetlić unikatowe eleme...
Zadanie 7
Wyświetl teraz po kolei na ekranie wszystkie pary
z utworzonego przez siebie słownika prezentów
dla dzieci.
Zadanie 7
Wyświetl teraz po kolei na ekranie wszystkie pary
z utworzonego przez siebie słownika prezentów
dla dzieci.
>>> ...
Połączmy wszystko!!
Zadanie 8
Połącz obie listy – dzieci i prezenty - w słownik w
taki sposób, by dziecko było kluczem a prezent mu
przypisany...
Zadanie 8
Połącz obie listy – dzieci i prezenty - w słownik w
taki sposób, by dziecko było kluczem a prezent mu
przypisany...
Zadanie 8
Połącz obie listy – dzieci i prezenty - w słownik w
taki sposób, by dziecko było kluczem a prezent mu
przypisany...
Zadanie 8
Połącz obie listy – dzieci i prezenty - w słownik w
taki sposób, by dziecko było kluczem a prezent mu
przypisany...
Zadanie 8
>>> dzieci_i_prezenty = {}
>>> len(prezenty)
35
>>> len(dzieci)
35
>>> len(set(dzieci))
35
>>> len(dzieci) == le...
Zadanie 8 – rozwiązanie 1
>>> dzieci_i_prezenty = {}
>>> for index in range(dzieci):
dzieci_i_prezenty[dzieci[index]] = pr...
Zadanie 8 – rozwiązanie 2
>>> dzieci_i_prezenty = {}
>>> for index, dziecko in enumerate(dzieci):
dzieci_i_prezenty[dzieck...
Zadanie 8 – rozwiązanie 3
>>> dzieci_i_prezenty = {}
>>> n = 0
>>> for dziecko in dzieci:
dzieci_i_prezenty[dziecko] = pre...
Zadanie 8 – rozwiązanie 4
>>> dzieci_i_prezenty = {}
>>> for dziecko, prezent in zip(dzieci, prezenty):
dzieci_i_prezenty[...
Zadanie 8 – rozwiązanie 5
>>> dzieci_i_prezenty = {}
>>> dzieci_i_prezenty = dict(zip(dzieci, prezenty))
>>> print(dzieci_...
Zadanie 8 – rozwiązanie 6
>>> dzieci_i_prezenty = {}
>>> for dziecko in dzieci:
dzieci_i_prezenty[dziecko] = prezenty[dzie...
PyTraning 2.0 #5: Ssssssssss jak słowniki.
PyTraning 2.0 #5: Ssssssssss jak słowniki.
Prochain SlideShare
Chargement dans…5
×

PyTraning 2.0 #5: Ssssssssss jak słowniki.

1 601 vues

Publié le

Pomagamy Pythonowi zabawić się w Gwiazdora - tym razem spróbujemy mu pomóc w dostarczeniu prezentów dla dzieci - czy uda się przypisać prezenty do dzieci?

Publié dans : Logiciels
  • Soyez le premier à commenter

PyTraning 2.0 #5: Ssssssssss jak słowniki.

  1. 1. PyTraning2.0 #5: Ssssssssss jak słowniki.. Słowniki, pętle
  2. 2. user_38251 9feSI6ru3na
  3. 3. Zadanie 1 Jakie typy danych tu widzimy? Dzieci: Ania, Marcin, Sebastian, Weronika, Maks, Zbyszek, Marysia, Kasia Prezenty: Klocki Lego, Gra planszowa, Książka, Ciepłe skarpety, Tablet, Sweter, Sweter, Rózga Miasta: Poznań, Kraków, Bielsko Biała Liczba prezentów: (5, 2, 1) Czy grzeczne? [True, False, True, True, False, True, True, True]
  4. 4. Typy danych Typy proste • Całkowity (int) • Zmiennopozycyjny (float) • Tesktowy (str) • Logiczny (bool) • Zespolony (complex) Typy strukturalne • Lista (list) • Krotka (tuple) • Zbiór (set) • Słownik, tabela (dict)
  5. 5. Typy danych Typy proste • Całkowity (int) • Zmiennopozycyjny (float) • Tesktowy (str) • Logiczny (bool) • Zespolony (complex) Typy strukturalne • Lista (list) • Krotka (tuple) • Zbiór (set) • Słownik, tabela (dict)
  6. 6. li = [5,2,1] li.count(0) li[2] li.pop() li[1:-1] len(li) 2 in li li.append('A') li.sort() Przypomnienie
  7. 7. a == [1,3,4] a = [1,3,4,5] a == [1,3,4,5,3] a == [3,5,4,3,1] a == [3,4,3,1] a == [1,3,3,4] a == [1,3,3,4,4] Przypomnienie 1) a.reverse() 2) a.sort() 3) a.pop() 4) a.append(4) 5) a = a + [5,3] 6) a.remove(5) 3) 5) 1) 6) 2) 4
  8. 8. a == [1,3,4] a = [1,3,4,5] a == [1,3,4,5,3] a == [3,5,4,3,1] a == [3,4,3,1] a == [1,3,3,4] a == [1,3,3,4,4] Przypomnienie 1) a.reverse() 2) a.sort() 3) a.pop() 4) a.append(4) 5) a = a + [5,3] 6) a.remove(5) 3) 5) 1) 6) 2) 4
  9. 9. a == ['A','B','B','c',None,3] a = ['A','B','c',None,3] a == ['B','c',None] a == ['c','c'] a == ['c','c','c'] a == ['c','c'] 1) a = a[2:5] 2) a = [a[-2]] + [a[1]] 3) a = a[:2] 4) a = [a[-1]]*3 5) a = a[:2] + a[1:] Przypomnienie 5) 1) 2) 4) 3)
  10. 10. a == ['A','B','B','c',None,3] a = ['A','B','c',None,3] a == ['B','c',None] a == ['c','c'] a == ['c','c','c'] a == ['c','c'] 1) a = a[2:5] 2) a = [a[-2]] + [a[1]] 3) a = a[:2] 4) a = [a[-1]]*3 5) a = a[:2] + a[1:] Przypomnienie 5) 1) 2) 4) 3)
  11. 11. Zadanie 2 – listy, krotki - powtórka Pomóż PyMikołajowi zrobić unikatową listę prezentów w porządku alfabetycznym i rozdziel ją później na dwie krotki o równej wielkości. prezenty = ['Domek dla lalek','Tablet','Rozga','Rower','Tablet','Ksiazka','Telefon', 'Pilka','Sweter','Ksiazka','Bilet do kina','Gra planszowa','Xbox','Gra komputerowa', 'Szalik','Slodycze','Mis pluszowy','Pizama','Tablet','Telefon','Ksiazka','Klawiatura', 'Zestaw do szycia','Zestaw do malowania','Maly majsterkowicz','Maly chemik','Lalka Barbie', 'Lyzwy','Klocki Lego','Samochodziki','Film','Slodycze','Szczeniak','Sweter','Narty'] dzieci = ['Ania P','Irek','Tadek','Marcin K','Karolina','Romek','Wiktoria','Witek', 'Pawel','Dominika','Marcin M','Blazej','Ania J','Grzegorz','Agnieszka','Marcelina', 'Klaudia','Marta','Piotr','Gosia','Kasia L','Kasia K','Tytus','Maja','Tymon','Marcin W', 'Robert','Zosia','Magda','Julia','Bartek','Andrzej','Zbyszek','Edek']
  12. 12. Zadanie 2 – listy, krotki - powtórka Pomóż PyMikołajowi zrobić unikatową listę prezentów w porządku alfabetycznym i rozdziel ją później na dwie krotki o równej wielkości. >>> unikatowe_prezenty = set(prezenty) >>> len(unikatowe_prezenty) 28 >>> unikatowe_prezenty = tuple(unikatowe_prezenty) >>> unikatowe_prezenty.sort() >>> unikatowe_prezenty_1 = unikatowe_prezenty[14:] >>> unikatowe_prezenty_2 = unikatowe_prezenty[:14] >>> print(unikatowe_prezenty, unikatowe_prezenty_1 , unikatowe_prezenty_2)
  13. 13. Zadanie 2 – listy, krotki - powtórka Pomóż PyMikołajowi zrobić unikatową listę prezentów w porządku alfabetycznym i rozdziel ją później na dwie krotki o równej wielkości. >>> unikatowe_prezenty = set(prezenty) >>> len(unikatowe_prezenty) 28 >>> unikatowe_prezenty = tuple(unikatowe_prezenty) >>> unikatowe_prezenty.sort() >>> unikatowe_prezenty_1 = unikatowe_prezenty[14:] >>> unikatowe_prezenty_2 = unikatowe_prezenty[:14] >>> print(unikatowe_prezenty, unikatowe_prezenty_1 , unikatowe_prezenty_2) >>> unikatowe_prezenty = tuple(sorted(set(prezenty))) Te trzy komend y można zapisać w jednej linijce
  14. 14. Typy danych Typy proste • Całkowity (int) • Zmiennopozycyjny (float) • Tesktowy (str) • Logiczny (bool) • Zespolony (complex) Typy strukturalne • Lista (list) • Krotka (tuple) • Zbiór (set) • Słownik, tabela (dict)
  15. 15. Słowniki  Zmienny (modyfikowalny), nieposortowany zestaw par klucz:wartość  Wartością może być dowolny obiekt Pythonowy.  Słownik nie jest sekwencją, gdyż w sekwencji istnieje porządek, a słownik są nieuporządkowane  Indeksem słownika jest klucz - kluczem, może być dowolny niezmienny typ.  Klucze: liczby, stringi, krotka – wyłącznie, jeśli każdy jej element jest typem niezmiennym  Lista za to nie może stanowić klucza w słowniku ponieważ jest typem zmiennym.
  16. 16. Słowniki  Słownik tworzymy umieszczając klucz:wartość w nawiasach klamrowych  nowy_dict = {klucz1:wartość1, klucz2:wartoość2, klucz3:wartość3}  Pusty słownik – pusty_dict = {}  do pustego słownika możemy dodawać elementy: pusty_dict[klucz]=wartosc  klucze muszą być unikatowe, chyba, że chcemy nadpisać wartość dla danego klucza >>> nowy_dict = {klucz1:wartość1, klucz2:wartość2, klucz3:wartość3}
  17. 17. Słowniki – metody i funkcje >>> slownik = {} >>> dir(slownik) ['__class__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values'] >>> del slownik[klucz] >>> len(slownik) >>> help(slownik) >>> help(slownik.update)
  18. 18. Stwórz słownik składający się z dwóch par klucz:wartość – np. imię dziecka i prezent. Następnie wyświetl prezenty dla dzieci. Dodaj nową parę dziecko:prezent. Zadanie 3
  19. 19. Stwórz słownik składający się z dwóch par klucz:wartość – np. imię dziecka i prezent. Następnie wyświetl prezenty dla dzieci. Dodaj nową parę dziecko:prezent. Zadanie 3 >>> prezenty_dla_dzieci = {'Kasia':'Mis pluszowy', 'Andrzej':'Tablet'} >>> print(prezenty_dla_dzieci['Kasia']) Mis pluszowy >>> print(prezenty_dla_dzieci['Andrzej'] Tablet >>> prezenty_dla_dzieci['Michal']='Telefon' >>> prezenty_dla_dzieci.update({'Karol':'Gra planszowa'})
  20. 20. Pętle służą do powtarzania czynności Budowa pętli: Dla czegoś w zbiorze: zrób określoną czynność for sth in list/tuple/set/string/range: do_sth(sth) Pętle - For
  21. 21. Pętle - For
  22. 22. Pętle - For
  23. 23. Pętle - For
  24. 24. Pętle - For
  25. 25. Zadanie 4 Narysuj choinkę według poniższych instrukcji (zapisz instrukcje w pliku choinka.py i go odpal): tree_element = ' * ' print(tree_element) tree_element = ' *** ' print(tree_element) tree_element = ' ***** ' print(tree_element) tree_element = '*******' print(tree_element)
  26. 26. Zadanie 5 Teraz narysuj choinkę używając pętli for i poniższej listy: choinka = [' * ', ' *** ', ' ***** ', '*******']
  27. 27. Zadanie 5 Teraz narysuj choinkę używając pętli for i poniższej listy: choinka = [' * ', ' *** ', ' ***** ', '*******'] for tree_element in choinka: print(tree_element)
  28. 28. Zadanie 6 Pomóż Mikołajowi wyświetlić po kolei na ekranie wszystkie unikatowe prezenty z pierwszej tupli prezentów razem z ich indeksem w tejże tupli.
  29. 29. Zadanie 6 Rower 0 Tablet 1 Zestaw do szycia 2 Szczeniak 3 Szalik 4 Lalka Barbie 5 Pizama 6 Narty 7 Lyzwy 8 Bilet do kina 9 Domek dla lalek 10 Rozga 11 Sweter 12 Samochodziki 13 >>> counter = 0 >>> for prezent in unikatowe_prezenty_1: print(prezent, n) n += 1 Definiujemy licznik, który będzie nam liczył kolejne przejścia pętli for. Pętla for idzie po kolei po każdym elemencie podanej sekwencji (np. lista/tupla/string/w słowniku po kluczach), dlatego też każde przejście pętli może nam wskazać, na którym elemencie obecnie jesteśmy. Należy pamiętać, że w Pythonie pierwszy indeks jest 0, więc definiujemy licznik jako 0 i na końcu pętli go zwiększamy, czyli liczymy, która pętla się skończyła – przechodzimy do następnego elementu – obecnie counter ma już wartość 1, co odpowiada indeksowi kolejnego elementu. I tak do końca sekwencji.
  30. 30. Zadanie 6 Rower 0 Tablet 1 Zestaw do szycia 2 Szczeniak 3 Szalik 4 Lalka Barbie 5 Pizama 6 Narty 7 Lyzwy 8 Bilet do kina 9 Domek dla lalek 10 Rozga 11 Sweter 12 Samochodziki 13 >>> for index in range(len(unikatowe_prezenty_1)): print(unikatowe_prezenty_1[index], index) Definiujemy zakres indeksów wpierw - > for numer in range() – jako range podajemy zakres jaki chcemy brać pod uwagę – w tym przypadku długość naszej sekwencji (tutaj listy). Idziemy po kolei po indeksach i z ich użyciem wywołujemy elementy listy (lista[index]).
  31. 31. Zadanie 6 Rower 0 Tablet 1 Zestaw do szycia 2 Szczeniak 3 Szalik 4 Lalka Barbie 5 Pizama 6 Narty 7 Lyzwy 8 Bilet do kina 9 Domek dla lalek 10 Rozga 11 Sweter 12 Samochodziki 13 >>> for index, prezent in enumerate(unikatowe_prezenty_1): print(prezent, index) enumerate() to funkcja, która zwraca tuple w postaci (counter, element) – u nas jest to index i prezent. Jeśli zrobimy: for el in enumerate(list): print el To zobaczymy: (0, element_listy_0) (1, element_listy_1) …. (n, element_listy_n) W tej pętli do indexu i prezentu przypisujemy adekwatnie 0 i 1 element tupli.
  32. 32. Zadanie 6 Rower 0 Tablet 1 Zestaw do szycia 2 Szczeniak 3 Szalik 4 Lalka Barbie 5 Pizama 6 Narty 7 Lyzwy 8 Bilet do kina 9 Domek dla lalek 10 Rozga 11 Sweter 12 Samochodziki 13 >>> for prezent in unikatowe_prezenty_1: print(prezent, unikatowe_prezenty.index(prezent)) lista.index(element) zwraca indeks pierwszego obiektu w liście, który będzie == element. Ta metoda zadziała jedynie, gdy w naszej sekwencji będziemy mieć unikatowe obiekty. W momencie, gdy obiekty będą się powtarzać, metoda zwróci za każdym razem indeks pierwszego wystąpienia danego obiektu.
  33. 33. Zadanie 6.1 >>> for el in range (len(unikatowe_prezenty_1)): print(unikatowe_prezenty_1[el]) ??? >>> n = 0 >>> for el in unikatowe_prezenty_1: print(unikatowe_prezenty_1[n]) n+=1 ??? >>> for el in enumerate(unikatowe_prezenty_1): print(unikatowe_prezenty_1[el[0]]) ??? >>> for el in unikatowe_prezenty_1: print(unikatowe_prezenty_1[unikatowe_prezenty_1.index(el)]) ??? Dla utrwalenia
  34. 34. Zadanie 6.1 ??? = >>> #wszystkie komendy powinny zwrócić Rower Tablet Zestaw do szycia Szczeniak Szalik Lalka Barbie Pizama Narty Lyzwy Bilet do kina Domek dla lalek Rozga Sweter Samochodziki
  35. 35. Zadanie 6.2 >>> for prezent in sorted(set(prezenty)): print prezent Dla utrwalenia Jeśli chcemy wyświetlić unikatowe elementy z listy w porządku alfabetycznym bez tworzenia samemu nowych zmiennych możemy to zrobić za jednym razem.
  36. 36. Zadanie 7 Wyświetl teraz po kolei na ekranie wszystkie pary z utworzonego przez siebie słownika prezentów dla dzieci.
  37. 37. Zadanie 7 Wyświetl teraz po kolei na ekranie wszystkie pary z utworzonego przez siebie słownika prezentów dla dzieci. >>> for dziecko in prezenty_dla_dzieci: print(dziecko, prezenty_dla_dzieci[dziecko]) Słownik jest nieuporządkowany, w związku z czym tak naprawdę nie przechodzimy tutaj po słowniku, a po liście jego kluczy.
  38. 38. Połączmy wszystko!!
  39. 39. Zadanie 8 Połącz obie listy – dzieci i prezenty - w słownik w taki sposób, by dziecko było kluczem a prezent mu przypisany wartością. Pamiętaj, że klucze muszą być unikatowe! Sprawdź wpierw czy lista dzieci jest unikatowa.
  40. 40. Zadanie 8 Połącz obie listy – dzieci i prezenty - w słownik w taki sposób, by dziecko było kluczem a prezent mu przypisany wartością. Pamiętaj, że klucze muszą być unikatowe! Sprawdź wpierw czy lista dzieci jest unikatowa. Hint? <pokaż spojler>
  41. 41. Zadanie 8 Połącz obie listy – dzieci i prezenty - w słownik w taki sposób, by dziecko było kluczem a prezent mu przypisany wartością. Pamiętaj, że klucze muszą być unikatowe! Sprawdź wpierw czy lista dzieci jest unikatowa. Użyj pętli for
  42. 42. Zadanie 8 Połącz obie listy – dzieci i prezenty - w słownik w taki sposób, by dziecko było kluczem a prezent mu przypisany wartością. Pamiętaj, że klucze muszą być unikatowe! Sprawdź wpierw czy lista dzieci jest unikatowa. Użyj pętli for Skorzystaj z zadania 6
  43. 43. Zadanie 8 >>> dzieci_i_prezenty = {} >>> len(prezenty) 35 >>> len(dzieci) 35 >>> len(set(dzieci)) 35 >>> len(dzieci) == len(set(dzieci)) True Uproszczona wersja – zakładamy, że działamy na liście unikatowych kluczy. W przypadku, gdybyśmy mieli listę dzieci z powtarzającymi się imionami trzeba by do pętli for tworzącej słownik (czyli następne slajdy) – dołączyć wyrażenie warunkowe – co robić, gdy dany klucz już mamy i nie chcemy go nadpisywać. Tutaj dzieci są unikatowe, więc nie będzie problemu z nadpisaniem. Sprawdzam też czy obie listy są równej długości, żeby nie pojawił się później problem, gdyby lista np. dzieci była dłuższa i próbowalibyśmy dodać prezent z pozycji, która w liście prezentów nie istnieje.
  44. 44. Zadanie 8 – rozwiązanie 1 >>> dzieci_i_prezenty = {} >>> for index in range(dzieci): dzieci_i_prezenty[dzieci[index]] = prezenty[index] >>> print(dzieci_i_prezenty) Bierzemy zakres od 0 do długości listy dzieci. Po kolei będziemy odnosić się a pomocą indeksu zarówno do listy dzieci, jak i listy prezentów. Temu samemu indeksowi z listy dzieci będzie odpowiadać obiekt z listy prezentów.
  45. 45. Zadanie 8 – rozwiązanie 2 >>> dzieci_i_prezenty = {} >>> for index, dziecko in enumerate(dzieci): dzieci_i_prezenty[dziecko] = prezenty[index] >>> print(dzieci_i_prezenty) Enumerate zwraca nam tuplę, która posiada indeks (licznik) i wartość z listy. Dlatego też nie musimy już odnosić się do listy dzieci podczas tworzenia pary klucz:wartość. Z listy prezentów pobieramy element znajdujący się w pozycji, określonej przez indeks.
  46. 46. Zadanie 8 – rozwiązanie 3 >>> dzieci_i_prezenty = {} >>> n = 0 >>> for dziecko in dzieci: dzieci_i_prezenty[dziecko] = prezenty[n] n += 1 >>> print(dzieci_i_prezenty) Jak wcześniej przy enumerate, tylko tutaj sami tworzymy licznik, który będzie nam liczył przejścia pętli.
  47. 47. Zadanie 8 – rozwiązanie 4 >>> dzieci_i_prezenty = {} >>> for dziecko, prezent in zip(dzieci, prezenty): dzieci_i_prezenty[dziecko] = prezent >>> print(dzieci_i_prezenty) Funkcja zip łączy listy/tuple, tworząc nowy obiekt zip: >>> c = zip(dzieci,prezenty) >>> c <zip object at 0x000000000513B388> Kolejne elementy w tym obiekcie to tuple w postaci (dziecko, prezent) z kolejnych pozycji obu list/tupli. (chyba, że mamy więcej list/tupli podanych to tuple będą wtedy w postaci (a,b,..,n)) Ilość takich tupli równa się długości najkrótszej listy/tupli – czyli możemy łączyć sekwencje różnej długości. Możemy zobaczyć jak wygląda taki zip zmieniając jego typ -> np.: >>> print(list(c))
  48. 48. Zadanie 8 – rozwiązanie 5 >>> dzieci_i_prezenty = {} >>> dzieci_i_prezenty = dict(zip(dzieci, prezenty)) >>> print(dzieci_i_prezenty) Jak wyżej. Jednakże w przypadku, gdy za pomocą zipa łączymy 2 listy/tuple – wówczas możemy użyć funkcji dict, by od razu obiekt zip zmienić na słownik. Gdy połączymy za pomocą zipa więcej obiektów to dict nie zadziała.
  49. 49. Zadanie 8 – rozwiązanie 6 >>> dzieci_i_prezenty = {} >>> for dziecko in dzieci: dzieci_i_prezenty[dziecko] = prezenty[dzieci.index(dziecko)] >>> print(dzieci_i_prezenty) Jako ciekawostka z użyciem metody index. W krokach wyglądałoby to tak: For dziecko in dzieci: index = dzieci.index(dziecko)] dzieci_i_prezenty[dziecko] = prezenty[index]

×