Looping over Dictionaries
Acum că știm ce este un dicționar, e timpul să-l parcurgem cu o buclă. La fel cum am parcurs listele, putem parcurge dicționarele. Dar pentru că un dicționar are chei și valori, lucrurile sunt puțin diferite
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"oras": "Vice City"
}
for i in jucator:
print(i)
Afișează
nume
viata
oras
Stai, a afișat doar cheile? Da. În mod implicit, când parcurgem un dicționar, Python ne dă cheile. Dar putem obține ușor și valorile
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"oras": "Vice City"
}
for i in jucator:
print(jucator[i])
Afișează
Tommy Vercetti
100
Vice City
Am folosit jucator[i] ca să luăm valoarea pentru fiecare cheie. Am luat i ca iterator, care ia pe rând fiecare cheie din dicționar. Asta funcționează, dar Python are o metodă mai frumoasă
.items() ne dă atât cheia cât și valoarea în același timp
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"oras": "Vice City"
}
for cheie, valoare in jucator.items():
print(f"Cheia {cheie} cu valoare {valoare}")
Vedem cum Python vede jucator.items(), știe că asta înseamnă pereche cheie: valoare, așa că atribuie automat cheie cu ce se află la stânga de : ("nume", "viata", "oras") și valoare cu ce se află la dreapta de : ("Tommy Vercetti", 100, "Vice City")
Dacă avem nevoie doar de chei, putem folosi .keys()
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"oras": "Vice City"
}
for c in jucator.keys():
print(c)
Afișează
nume
viata
oras
Dacă avem nevoie doar de valori, folosim .values()
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"oras": "Vice City"
}
for v in jucator.values():
print(v)
Afișează
Tommy Vercetti
100
Vice City
Un caz de utilizare foarte des întâlnit: numărarea lucrurilor. Să zicem că vrem să numărăm de câte ori apare fiecare literă într-un cuvânt
cuvant = "banana"
contor = {}
for litera in cuvant:
if litera in contor:
contor[litera] = contor[litera] + 1
else:
contor[litera] = 1
print(contor)
Afișează
{'b': 1, 'a': 3, 'n': 2}
Acesta se numește dicționar de frecvențe sau histogramă. Verificăm: este litera deja în dicționar? Dacă da, creștem numărul. Dacă nu, îl pornim de la 1
len() funcționează și pe dicționare
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"oras": "Vice City"
}
print(len(jucator))
Afișează 3: dicționarul are 3 perechi cheie-valoare
Misiune: Scorurile Echipajului
Ai un dicționar cu membrii echipajului și scorurile lor de la ultima misiune (deja în dreapta). Parcurge-l și construiește un raport.
Afișează, în această ordine:
Numelefiecărui membru (parcurge cu .keys())Scorulfiecărui membru (parcurge cu .values())Total:apoi suma tuturor scorurilorMedie:apoi totalul împărțit la numărul de membri (folosește len())Top:apoi numele membrului cu cel mai mare scor
Ieșire
Tommy
Lance
Cortez
Phil
Ken
Sonny
Diaz
Avery
Umberto
Mercedes
88
95
70
90
65
78
84
72
60
83
Total: 785
Medie: 78.5
Top: Lance