Dicționare în Python
Ce este un Dicționar?
Dicționarul este o colecție de perechi cheie-valoare, neordonată (în Python <3.7) și mutabilă.
student = {
"nume": "Ana",
"varsta": 22,
"note": [9, 10, 8]
}
gol = {}
Accesarea Valorilor
d = {"a": 1, "b": 2, "c": 3}
d["a"] # 1
# d["x"] # KeyError!
d.get("a") # 1
d.get("x") # None (fără eroare)
d.get("x", 0) # 0 (valoare implicită)
Modificarea Dicționarelor
Adăugare și actualizare
d = {"a": 1}
d["b"] = 2 # Adaugă {"a": 1, "b": 2}
d["a"] = 10 # Actualizează {"a": 10, "b": 2}
d.update({"c": 3}) # {"a": 10, "b": 2, "c": 3}
Eliminare
d = {"a": 1, "b": 2, "c": 3}
del d["a"] # {"b": 2, "c": 3}
val = d.pop("b") # val=2, d={"c": 3}
item = d.popitem() # Elimină ultima pereche
d.clear() # {}
Iterare prin Dicționare
d = {"a": 1, "b": 2, "c": 3}
# Prin chei (implicit)
for cheie in d:
print(cheie)
# Explicit prin chei
for cheie in d.keys():
print(cheie)
# Prin valori
for valoare in d.values():
print(valoare)
# Prin perechi cheie-valoare
for cheie, valoare in d.items():
print(f"{cheie}: {valoare}")
Metode Utile
d = {"a": 1, "b": 2}
len(d) # 2
list(d.keys()) # ['a', 'b']
list(d.values()) # [1, 2]
list(d.items()) # [('a', 1), ('b', 2)]
"a" in d # True (verifică cheile)
d.copy() # Copie superficială
Chei Valide
Cheile trebuie să fie hashable (imutabile):
# VALID
d = {
"text": 1, # str - OK
42: "numar", # int - OK
(1, 2): "tuplu", # tuple - OK (dacă conține doar imutabile)
}
# INVALID - va genera TypeError
# d = {[1, 2]: "lista"} # liste NU pot fi chei
# d = {{}: "dict"} # dicționare NU pot fi chei
Dicționare Imbricate
studenti = {
"s1": {"nume": "Ana", "nota": 10},
"s2": {"nume": "Ion", "nota": 8}
}
studenti["s1"]["nume"] # "Ana"
studenti["s2"]["nota"] # 8
De Reținut
Cheile unui dicționar pot fi de tipuri diferite, dar trebuie să fie hashable. Valorile pot fi de orice tip, inclusiv alte dicționare sau liste.
Întrebări de Verificare
- Ce returnează
d.get("x", 0)dacă “x” nu există? - Cum verifici dacă o cheie există în dicționar?
- Ce tipuri de date pot fi chei?
- Care este diferența dintre
d["x"]șid.get("x")?