Exerciții Practice cu Dicționare
Exercițiul 1: Iterare prin Dicționar
Problemă: Ce afișează următorul cod?
dct = {}
dct['1'] = (1, 2)
dct['2'] = (2, 1)
for x in dct.keys():
print(dct[x][1], end="")
Răspuns: 21
Explicație:
dct['1'][1]= 2 (al doilea element din tuplu)dct['2'][1]= 1 (al doilea element din tuplu)
Exercițiul 2: Chei de Dicționar
Problemă: Care dintre următoarele poate fi cheie de dicționar?
- a)
[1, 2, 3]- listă - b)
(1, 2, 3)- tuplu - c)
{1, 2, 3}- mulțime - d)
{"a": 1}- dicționar
Răspuns: b) Tuplul
Explicație: Cheile trebuie să fie hashable (imutabile). Listele, mulțimile și dicționarele sunt mutabile.
Exercițiul 3: Metoda get()
Problemă: Ce returnează d.get("x", 100) dacă d = {"a": 1, "b": 2}?
Răspuns: 100
Explicație: "x" nu există, așa că se returnează valoarea implicită.
Exercițiul 4: Crearea Dicționarului
Problemă: Creează un dicționar cu numerele 1-5 ca chei și pătratele lor ca valori.
Soluție:
# Cu comprehension
d = {x: x**2 for x in range(1, 6)}
print(d) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# Cu buclă
d = {}
for x in range(1, 6):
d[x] = x**2
Exercițiul 5: Numărare Elemente
Problemă: Numără frecvența fiecărui caracter în șirul "hello".
Soluție:
text = "hello"
frecventa = {}
for c in text:
frecventa[c] = frecventa.get(c, 0) + 1
print(frecventa) # {'h': 1, 'e': 1, 'l': 2, 'o': 1}
Exercițiul 6: Inversarea Dicționarului
Problemă: Inversează cheile și valorile din {"a": 1, "b": 2, "c": 3}.
Soluție:
original = {"a": 1, "b": 2, "c": 3}
inversat = {v: k for k, v in original.items()}
print(inversat) # {1: 'a', 2: 'b', 3: 'c'}
Exercițiul 7: Dicționar Imbricat
Problemă: Accesează nota lui “Ana” din:
studenti = {
"s1": {"nume": "Ana", "nota": 10},
"s2": {"nume": "Ion", "nota": 8}
}
Soluție:
# Dacă știi cheia
nota = studenti["s1"]["nota"] # 10
# Dacă cauți după nume
for student in studenti.values():
if student["nume"] == "Ana":
nota = student["nota"]
break
Exercițiul 8: Combinarea Dicționarelor
Problemă: Combină {"a": 1, "b": 2} cu {"c": 3, "d": 4}.
Soluție:
d1 = {"a": 1, "b": 2}
d2 = {"c": 3, "d": 4}
# Soluția 1: update()
rezultat = d1.copy()
rezultat.update(d2)
# Soluția 2: unpacking (Python 3.5+)
rezultat = {**d1, **d2}
# Soluția 3: union (Python 3.9+)
rezultat = d1 | d2
Teste pentru Examen
-
Ce returnează
len({"a": 1, "b": 2, "a": 3})?- Răspuns:
2(cheile duplicate se suprascriu)
- Răspuns:
-
Ce face
d.pop("cheie")?- Răspuns: Elimină și returnează valoarea pentru “cheie”
-
Cum verifici dacă “x” e cheie în dicționar?
- Răspuns:
"x" in d
- Răspuns:
-
Ce returnează
d.keys()?- Răspuns: Un view cu cheile dicționarului
-
Poate un tuplu de liste să fie cheie?
- Răspuns: NU (listele sunt mutabile)