Rečnik pronalazi povezane vrednosti pomoću smislenih ključeva.
Liste organizuju vrednosti po poziciji: pozicija → vrednost. Rečnik organizuje jednu povezanu grupu informacija pomoću smislenih naziva: ključ → vrednost. Za učenika izraz student["name"] jasnije govori šta tražimo nego student[0].
student = {
"name": "Ana",
"age": 22,
"course": "Python",
}
print(student["name"])
print(student["course"])Vitičaste zagrade {} sadrže parove ključ: vrednost razdvojene zarezima. Ovde su "name" → "Ana", "age" → 22 i "course" → "Python". Ključ govori Pythonu koju povezanu vrednost treba da pronađe. Izraz student["name"] čitajte kao student → "name" → "Ana": "name" je ključ, a ne pozicija u listi.
Ana
PythonRečnik je promenljiv, kao i lista. Dodela vrednosti postojećem ključu menja tu vrednost: pre je "age" → 22; posle student["age"] = 23 je "age" → 23. Ključ ostaje isti, a menja se njegova povezana vrednost.
Jedna dodela, dva moguća ishoda: Kada ključ već postoji, dictionary[key] = value menja njegovu vrednost. Kada je ključ nov, isti oblik dodaje novi par ključ–vrednost. Rečnik ne može istovremeno čuvati dva odvojena unosa sa istim ključem.
student = {"name": "Ana", "age": 22}
student["age"] = 23
student["city"] = "Novi Sad"
print(student["age"])
print(student["city"])Prva dodela menja postojeću vrednost "age". Druga pravi novi par "city" → "Novi Sad". Ista sintaksa sa uglastim zagradama je korisna jer ključ govori Pythonu da li treba da izmeni ili doda vrednost.
student = {"name": "Ana", "age": 22}
print("name" in student)
print("email" in student)key in dictionary proverava da li taj ključ postoji. Rezultat je True, pa False. Ne pretražuje vrednosti, zato "Ana" in student nije provera vrednosti "Ana".
student = {"name": "Ana", "age": 22, "course": "Python"}
print(len(student))
print(student.get("email"))
print(student.get("email", "Not provided"))len(student) broji tri para ključ–vrednost. student["email"] bi izazvao KeyError jer taj ključ ne postoji. get() je bezbedno pronalaženje: vraća None kada ključ nedostaje ili podrazumevanu vrednost "Not provided" kada je navedete.
student = {"name": "Ana", "age": 22}
for key in student:
print(key, student[key])
for key, value in student.items():
print(key, value)Obična petlja for key in student daje ključeve. Koristite student[key] da pronađete svaku povezanu vrednost. items() daje parove ključ–vrednost, pa Python može da ih raspakuje u promenljive key i value.
profile = {"name": "Ana", "points": 10}
profile["points"] = 15
profile["level"] = "beginner"
print(profile["points"])
print("level" in profile)
print(len(profile))Pre pokretanja pratite stanje: počnite sa dva para, izmenite "points", zatim dodajte "level". Pronalaženje ispisuje 15, pripadnost za "level" je True, a rečnik sada ima tri para.
Izaberite kolekciju prema problemu koji rešava
- Koristite listu za uređene vrednosti koje mogu da se menjajuIzaberite listu kada su važni redosled ili pozicije i kada kolekcija može da raste, smanjuje se ili menja.
- Koristite torku za jednu fiksnu povezanu grupuIzaberite torku za stabilne povezane vrednosti čije pozicije imaju značenje, kao što su koordinate.
- Koristite skup za jedinstvenost i pripadnostIzaberite skup kada duplikati treba da nestanu, a pripadnost je važnija od pozicije.
- Koristite rečnik za imenovane povezane informacijeIzaberite rečnik kada vrednosti treba pronaći pomoću smislenih ključeva kao što su
"name","email"ili"course".
Česte početničke greške
- Mešanje ključa i njegove vrednostiU izrazu
student["name"]je"name"ključ, a"Ana"njegova vrednost. Ključ pomaže Pythonu da pronađe vrednost. - Zaboravljanje navodnika oko tekstualnog ključa
student[name]traži promenljivu po imenuname. Pišitestudent["name"]kada je sam ključ tekst"name". - Pristup nepostojećem ključu bez plana
student["email"]izazivaKeyErrorkada ključ"email"ne postoji. Koristiteget()kada je nedostajući ključ očekivana mogućnost. - Pogrešno očekivanje da in proverava vrednosti
"name" in studentproverava ključeve. Ne pretpostavljajte dainautomatski pretražuje vrednosti rečnika. - Očekivanje dupliranih ključevaDodela vrednosti postojećem ključu zamenjuje vrednost tog ključa; ne pravi drugu nezavisnu kopiju istog ključa.
