2. Filtrar les claus d’un diccionari¶
Dissenya la funció següent i desa-la al mòdul dic_filtres
(fitxer dic_filtres.py):
- dic_filtres.filtrar_per_llista(dicc, claus)¶
Filtra les claus de dicc contingudes a la llista claus.
- Paràmetres:
- Tipus de retorn:
- Retorna:
diccionari que només conté les claus de la llista claus i els mateixos valors associats que en dicc
Per exemple:
>>> d = {'a': 4, 'b': 1, 'c': -5, 'd': 3} >>> l = ['c', 'a'] >>> r = filtrar_per_llista(d, l) >>> r == {'a': 4, 'c': -5} True >>> r = filtrar_per_llista(d, []) >>> r {} >>> r = filtrar_per_llista(d, list(d.keys())) >>> r == d True
Disposes de més tests al fitxer
test-filtrar_per_llista.txt.
Un diccionari bidimensional és una estructura de dades semblant a una matriu. La diferència és que els índexs de les files i de les columnes són claus en comptes de nombres naturals. Per tant, un diccionari bidimensional té un conjunt de claus per les files i un altre per les columnes. Podem implementar aquesta estructura de dades usant un diccionari de diccionaris, és a dir, un diccionari en què el valor associat a cada clau serà un altre diccionari que correspon a la fila, com en l’exemple següent:
>>> d = {
... 'a': {'x': 0, 'y': 10, 'z': 20},
... 'b': {'x': 1, 'y': 11, 'z': 21},
... 'c': {'x': 2, 'y': 12, 'z': 22},
... 'd': {'x': 3, 'y': 13, 'z': 23},
... }
Al diccionari bidimensional d de l’exemple anterior, el
conjunt de claus de les files és {'a', 'b', 'c', 'd'} i el
conjunt de claus de les columnes és {'x', 'y', 'z'}. En aquest
diccionari bidimensional, el valor associat a la fila 'c' i a
la columna y és 12 i s’hi accedeix fent
d['c']['y']. Observa que el conjunt de claus de tots els
diccionaris de les files és el mateix: el conjunt de claus de les
columnes.
Dissenya la funció següent i desa-la també al mòdul dic_filtres
(fitxer dic_filtres.py):
- dic_filtres.filtrar_bidimensional(dicc, files, cols)¶
Filtra les claus de les files del diccionari bidimensional dicc contingudes a la llista files i les de les columnes contingudes a la llista cols.
- Paràmetres:
- Tipus de retorn:
- Retorna:
diccionari bidimensional que només conté les claus de les files de files i les claus de les columnes de cols. Els valors són els mateixos que en dicc
Per exemple:
>>> d = { ... 'a': {'x': 0, 'y': 10, 'z': 20}, ... 'b': {'x': 1, 'y': 11, 'z': 21}, ... 'c': {'x': 2, 'y': 12, 'z': 22}, ... 'd': {'x': 3, 'y': 13, 'z': 23}, ... } >>> f = ['c', 'a'] >>> c = ['z'] >>> r = filtrar_bidimensional(d, f, c) >>> r == { ... 'a': {'z': 20}, ... 'c': {'z': 22}, ... } True >>> f = [] >>> c = ['x', 'z'] >>> r = filtrar_bidimensional(d, f, c) >>> r {} >>> f = ['b', 'd'] >>> c = [] >>> r = filtrar_bidimensional(d, f, c) >>> r == { ... 'b': {}, ... 'd': {}, ... } True
Disposes de més tests al fitxer
test-filtrar_bidimensional.txt.Important
La funció
filtrar_bidimensional()ha de cridar afiltrar_per_llista().