# Python 3 per a no programadors/Diccionaris

Aquest capítol tracta de diccionaris. Els diccionaris tenen claus i valors. Les claus es fan servir per trobar els valors. Aquí hi ha un exemple d'ús d'un diccionari:
I aquest és el resultat:
Aquest programa és similar a la llista de noms anterior en el capítol sobre llistes. Aquí hi ha com treballa el programa. Primer es defineix la funció print_menu. print_menu només escriu un menú que més tard es farà servir dues vegades en el programa. Després ve la línia amb aspecte divertit números =. Tot el que aquesta línia fa és dir a Python que números és un diccionari. Les següents línies només fan que el menú funcioni. Les línies
ressegueix el diccionari o escriu tota la informació. La funció números.keys retorna una llista que llavors es fa servir pel bucle for. La llista retornada per keys no està en cap ordre particular així que si es vol en ordre alfabètic s'ha d'ordenar. De forma similar al que es fa amb les llistes la expressió números[x] es fa servir per accedir a un membre específic del diccionari. Naturalment en aquest cas x és una cadena. La línia següent números[nom] = telèfon afegeix un número de telèfon i un nom al diccionari. Si nom ja esta al diccionari telèfon reemplaçaria qualsevol cosa era hi hagués abans. Les següents línies
comproven si un nom és al diccionari i el treuen si ho és. L'operador nom in números retorna true si nom és a números, si no retorna false. La línia del números[nom] elimina nom i el valor associat amb aquesta clau. Les línies
comproven per veure si el diccionari té una clau determinada i si ho fa imprimeixen el número associat amb ella. Finalment, si l'opció del menú no és vàlida reimprimeix el menú.
Una recapitulació: els diccionaris tenen claus i valors. Les claus poden ser cadenes o números. Les claus apunten als valors. Els valors poden ser qualsevol tipus de variable (Incloses les llistes o diccionaris). Heus aquí un exemple de l'ús d'una llista en un diccionari:
I aquest n'és el resultat:
Així és com funciona el programa. Bàsicament, la variable students és un diccionari on les claus són el nom dels estudiants i els valors són les seves notes. Les dues primeres línies creen dues llistes. La següent línia students = {'#Max': max_points} crea un nou diccionari amb la clau {#Max} i el valor es fixa per a ser [25, 25, 50, 25, 100] (Es fa servir la #Max des que # s'ordena per davant de qualsevol caràcter alfabètic). Després print_menu és definit. A continuació, la funció print_all_grades està definida en el línies:
lines:
Observeu com primer les claus s'aconsegueixen del diccionari students amb la funció keys en la línia keys = list(students.keys) . keys és un iteratiu, i es convertirà a llista per a totes les funcions per llistes que es poden utilitzar. A continuació les claus s'ordenen en la línia keys.sort. for s'utilitza per passar per totes les claus. Els graus s'emmagatzemen com una llista dins del diccionari per a l'assignació grades = students[x] dóna grades de la llista que s'emmagatzemen en la clau x. La funció print_grades només imprimeix una llista i es defineix unes línies més endavant.
Les últimes línees del programa implementen les diferents opcions del menú. La línia students[name] = [0] * len(max_points) afegeix un estudiant a la clau del seu nom. La nota [0] * len(max_points) simplement crea una llista de 0's amb la mateixa llargada que la llista de max_points.
L'entrada per esborrar estudiants simplement esborra d'una manera similar a l'exemple de la guia telefònica. El registra de les notes és una mica més complex. Les qualificacions es gestionen en la línea grades = students[name], prenent com a referència l'estudiant mitjançant name. Llavors la nota es registra a la línia grades[which] = grade. Us podreu adonar que grades no s'inclou mai al diccionari dels estudiants (no als students[name] = grades). Això és degut al fet que grades es realiment un altre nom de students[name], i al canviar grades es canvia student[name].
Els diccionaris proporcionen una forma fàcil de vincular valors i claus. Això pot ser usat per mantenir fàcilment un registre de dades que s'adjunta a les diferents claus.