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.