.. module:: dic_filtres Filtrar les claus d'un diccionari ================================= Dissenya la funció següent i desa-la al mòdul :mod:`dic_filtres` (fitxer :file:`dic_filtres.py`): .. function:: filtrar_per_llista(dicc, claus) Filtra les claus de `dicc` contingudes a la llista `claus`. :param dict dicc: diccionari :param list claus: llista amb un subconjunt de les claus de `dicc` :rtype: dict :return: diccionari que només conté les claus de la llista `claus` i els mateixos valors associats que en `dicc` Per exemple: .. literalinclude:: test-filtrar_per_llista.txt :language: pycon :start-after: ---- inici :end-before: ---- fi Disposes de més tests al fitxer :download:`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: .. literalinclude:: test-filtrar_bidimensional.txt :language: pycon :lines: 5-10 Al diccionari bidimensional :code:`d` de l'exemple anterior, el conjunt de claus de les files és :code:`{'a', 'b', 'c', 'd'}` i el conjunt de claus de les columnes és :code:`{'x', 'y', 'z'}`. En aquest diccionari bidimensional, el valor associat a la fila :code:`'c'` i a la columna :code:`y` és :code:`12` i s'hi accedeix fent :code:`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 :mod:`dic_filtres` (fitxer :file:`dic_filtres.py`): .. function:: 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`. :param dict dicc: diccionari bidimensional :param list files: llista amb un subconjunt de les claus de les files de `dicc` :param list cols: llista amb un subconjunt de les claus de les columnes de `dicc` :rtype: dict :return: 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: .. literalinclude:: test-filtrar_bidimensional.txt :language: pycon :start-after: ---- inici :end-before: ---- fi Disposes de més tests al fitxer :download:`test-filtrar_bidimensional.txt`. .. important:: La funció :func:`filtrar_bidimensional` ha de cridar a :func:`filtrar_per_llista`.