Capítol 10

Diccionaris

Les llistes guarden valors ordenats per posició. Els diccionaris guarden valors per clau — com un diccionari real, on busques una paraula (clau) i trobes la definició (valor).

Crear un diccionari i accedir-hi

Un diccionari s'escriu amb claus {}. Cada entrada és un parell clau: valor, separat per comes:

Per accedir a un valor, escrius el nom del diccionari seguit de la clau entre claudàtors []. Les claus solen ser cadenes de caràcters; els valors poden ser qualsevol tipus de dades.

A diferència de les llistes, l'ordre no importa: no busques per posició (0, 1, 2…), sinó per nom.

Afegir, modificar i eliminar entrades

Pots afegir una entrada nova simplement assignant-li un valor. Si la clau ja existia, el valor s'actualitza:

Per eliminar una entrada, usa del:

Mètodes útils: keys(), values(), items()

Els diccionaris tenen tres mètodes fonamentals per inspeccionar-los:

El list() converteix el resultat en una llista normal per poder-lo imprimir. A la secció següent veuràs com recórrer-los directament sense convertir.

Recórrer les entrades d'un diccionari

La manera més pràctica de recórrer un diccionari és amb .items() i fent una doble iteració amb la instrucció for:

Comprovar si una clau existeix

Si intentes accedir a una clau que no existeix, Python dona un KeyError. Per evitar-ho, fes servir la instrucció in:

Alternativament, el mètode .get(clau, valor_per_defecte) retorna el valor si existeix, o el valor per defecte si no:

Errors típics

El KeyError és l'error més freqüent amb diccionaris. Executa l'exemple i observa l'error:

Corregeix el codi perquè no doni error (pots usar in o .get()).

Exercici

Crea un diccionari puntuacions amb exactament aquestes tres entrades: "Anna"85, "Bernat"92, "Carla"78. Després, recorre el diccionari amb for i imprimeix cada línia en el format Nom: X punts.
Anna: 85 punts
Bernat: 92 punts
Carla: 78 punts

Resum

  • Un diccionari guarda parelles clau-valor: {"clau": valor}.
  • S'accedeix per clau: d["clau"]. Si no existeix: KeyError.
  • Afegir o modificar: d["nova"] = valor. Eliminar: del d["clau"].
  • Mètodes útils: .keys(), .values(), .items().
  • Recórrer: for clau, valor in d.items():
  • Comprovar si existeix: if "clau" in d: o d.get("clau", defecte).