Analítiques

Les analítiques de diversos pacients venen representades en una llista, labdip. Cada element de la llista conté un primer element corresponent al nom de la persona (string) i una o diverses tuples corresponents a les proves. Cada tuple té dos elements: el nom de la prova (string) i la mesura obtinguda (enter o real).

A partir d’aquesta llista es vol obtenir un diccionari on la clau sigui el nom d’una prova i el valor una llista de les mesures obtingudes en aquella prova de totes les persones de la llista. En aquest diccionari hi han d’aparèixer totes les proves que hi hagi a la llista.

Dissenya la funció analitica() que a partir d’una llista de les característiques esmentades, construeixi i retorni un diccionari com l’indicat.

Per fer-ho farem primer una funció auxiliar modificadora que actualitzi un diccionari a partir les dades d’un únic pacient. Implementa, per tant, una funció anomenada afegeix_analitiques() que donada una llista de tuples de dos elements, una prova (string) i el seu valor (enter o float) i un diccionari com el que ha estat prèviament descrit, actualitza el diccionari afegint-hi les dades de la llista donada.

La funció principal analitica() ha de cridar la afegeix_analitiques().

Guarda les dues funcions en el fitxer analitica.py. Exemple:

>>> l1=[('hematies', 4800000), ('calci', 11.2), ('colesterol', 2.3)]
>>> d={}
>>> afegeix_analitiques(l1, d)
>>> if d != {'hematies': [4800000], 'calci':[11.2], 'colesterol': [2.3]}:
...    print (d)
>>> l2=[('hematies', 3500000), ('calci', 15.2), ('basofils', 0.3)]
>>> afegeix_analitiques(l2, d)
>>> if d != {'hematies':[4800000, 3500000], 'calci': [11.2, 15.2], 'colesterol': [2.3], 'basofils':[0.3]}:
...    print (d)


>>> labdip= [['pol', ('hematies', 4430000), ('basofils', 0.5), ('calci', 9)], 
...   ['josep', ('hematies', 5130000), ('hematocrit', 40)],
...   ['enrica', ('hematies', 4800000), ('calci', 11.2), ('colesterol', 2.3)],
...   ['paco', ('calci', 10.6), ('glucosa', 0.9)],
...   ['lidia', ('hematies', 4620000),  ('hematocrit', 50), ('basofils', 0.7)],
...   ['pau', ('calci', 10.1), ('glucosa', 1.5), ('colesterol', 2.5)]]
>>> dicc = analitica(labdip)
>>> if dicc != {'colesterol': [2.3, 2.5], 'hematocrit': [40.0, 50.0], 
...   'calci': [9, 11.2, 10.6, 10.1], 
...   'hematies': [4430000.0, 5130000.0, 4800000.0, 4620000.0], 
...   'glucosa': [0.9, 1.5], 'basofils': [0.5, 0.7]}:
...        print(dicc)

Nota

Podeu baixar el fitxer amb tests analitica.txt

Solució

Disposeu de solucions al fitxer analitica.py.