Dictionaries
Până acum am stocat valori în variabile și în liste. O listă este grozavă când avem o grămadă de valori și le accesăm după poziția lor (index 0, 1, 2, …). Dar ce ne facem dacă nu ne pasă de poziție și în schimb ne pasă de un nume?
Imaginează-ți agenda telefonică a lui Tommy Vercetti. El nu spune „dă-mi contactul numărul 3". El spune „dă-mi numărul de telefon al lui Cortez". Numele este modul în care caută lucrurile
Exact asta face un dicționar în Python
agenda_telefonica = {
"Cortez": "555-1234",
"Lance": "555-5678",
"Phil": "555-9999"
}
print(agenda_telefonica["Cortez"])
Afișează 555-1234
Un dicționar se creează cu acolade {}. Înăuntru, scriem perechi key: value (cheie: valoare) separate prin virgule. Cheia este ceea ce folosim ca să căutăm lucrurile (cum ar fi numele), iar valoarea este ceea ce primim înapoi (cum ar fi numărul de telefon)
agenda_telefonica = {
"Cortez": "555-1234",
"Lance": "555-5678",
"Phil": "555-9999"
}
print(agenda_telefonica["Lance"])
print(agenda_telefonica["Phil"])
Afișează
555-5678
555-9999
Ce se întâmplă dacă cerem o cheie care nu există?
agenda_telefonica = {
"Cortez": "555-1234",
"Lance": "555-5678"
}
print(agenda_telefonica["Sonny"])
Rulează. Vei vedea o KeyError. Python ne spune: „nu cunosc niciun Sonny"
Putem adăuga o intrare nouă sau modifica una existentă foarte ușor
agenda_telefonica = {
"Cortez": "555-1234",
"Lance": "555-5678"
}
agenda_telefonica["Tommy"] = "555-0000"
print(agenda_telefonica["Tommy"])
agenda_telefonica["Lance"] = "555-1111"
print(agenda_telefonica["Lance"])
Afișează
555-0000
555-1111
Dacă cheia nu există, Python o creează. Dacă există deja, Python o actualizează. Simplu
Putem și elimina o intrare cu del
agenda_telefonica = {
"Cortez": "555-1234",
"Lance": "555-5678"
}
del agenda_telefonica["Lance"]
print(agenda_telefonica)
Afișează
{'Cortez': '555-1234'}
Lance a dispărut. Scuze, Lance :)
Ca să verificăm dacă o cheie există înainte să o accesăm, folosim in
agenda_telefonica = {"Cortez": "555-1234"}
if "Cortez" in agenda_telefonica:
print("L-am gasit pe Cortez!")
else:
print("Cortez nu este in agenda")
La fel ca listele, dicționarele pot conține orice tip de valoare: șiruri de caractere, numere, valori booleene, chiar și alte liste sau dicționare
jucator = {
"nume": "Tommy Vercetti",
"viata": 100,
"este_viu": True,
"arme": ["bat", "pistol", "shotgun"]
}
print(jucator["nume"])
print(jucator["viata"])
print(jucator["arme"])
Misiune: Baza de Date a Echipajului
În editor primești patru detalii despre un membru al echipajului sub formă de variabile: nume, rol, varsta și statie.
Fă următoarele, în ordine:
- Creează un dicționar
echipajcu trei chei ("nume","rol"și"varsta") folosind variabilelenume,rolșivarstaca valori - Adaugă o cheie nouă
"statie", folosind variabilastatieca valoare - E ziua de naștere a membrului, așa că actualizează
varstadin dicționar adăugându-i 1 (folosind operatorul +) - Afișează valorile pentru
nume,rol,varstașistatie, fiecare pe propria linie - Încă nu urmărim rangul, așa că dacă cheia
"rang"nu este în dicționar, afișeazăRang: necunoscut
Ieșire
Pentru valorile din editor, programul afișează ceva de genul
Tommy
Pilot
35
Laniakea
Rang: necunoscut
Schimbă o valoare de sus și rulează din nou, raportul se schimbă și el.