3. Vacunes

La informació sobre la vacunació a diferents comarques de Catalunya s’emmagatzema a un fitxer on cada línia representa a una persona i està formada pel sexe, la comarca, les dosis que porta posades, la data de vacunació i el fabricant, tot separat per punt i coma (;). Les dates estan representades amb el format dd/mm/aaaa. Per exemple:

Dona;ALT EMPORDA;1;28/06/2021;BioNTech / Pfizer
Home;BERGUEDA;1;07/01/2022;Moderna / Lonza
Home;CERDANYA;1;01/04/2021;BioNTech / Pfizer
Dona;CERDANYA;1;01/04/2021;Oxford / AstraZeneca
Dona;BERGUEDA;2;01/04/2021;BioNTech / Pfizer
Home;CERDANYA;2;01/04/2021;BioNTech / Pfizer
Home;BERGUEDA;1;02/08/2021;BioNTech / Pfizer
Dona;ALT EMPORDA;1;01/04/2021;BioNTech / Pfizer
Dona;BERGUEDA;3;07/01/2022;Moderna / Lonza

Per resoldre aquest exercici has de dissenyar les funcions següents i desar-les al mòdul vacunes (fitxer vacunes.py):

vacunes.filtra_fitxer(nom_f_dades, nom_f_sort, a)

Donat un string nom_f_dades amb el nom d’un fitxer amb dades de vacunació com el descrit anteriorment, un altre string nom_f_sort amb el nom d’un segon fitxer i un enter a, escriu al fitxer anomenat nom_f_sort les dades del primer fitxer corresponents a l’any a, en el mateix format que l’original però només amb la informació de sexe, comarca i fabricant.

Per exemple, donada la crida

filtra_fitxer('vac.txt','vac_filtrat.txt',2021)

a on vac.txt és el fitxer de l’exemple anterior (vac.txt), la funció crearia el fitxer vac_filtrat.txt amb el següent contingut:

Dona;ALT EMPORDA;BioNTech / Pfizer
Home;CERDANYA;BioNTech / Pfizer
Dona;CERDANYA;Oxford / AstraZeneca
Dona;BERGUEDA;BioNTech / Pfizer
Home;CERDANYA;BioNTech / Pfizer
Home;BERGUEDA;BioNTech / Pfizer
Dona;ALT EMPORDA;BioNTech / Pfizer

Disposeu de tests al fitxer test-filtra-fitxer.txt.


vacunes.classifica(nomf_filtrat)

nomf_filtrat és el nom d’un fitxer (string) de vacunació com el que escriu la funció anterior, és a dir, només amb la informació de sexe, comarca i fabricant.

Retorna un diccionari de comarques creat a partir de les dades contingudes al fitxer.

En aquest diccionari, cada clau és una tupla amb una comarca i un fabricant i cada valor una llista de dos elements amb el nombre de dones i homes respectivament vacunats en cada comarca i amb els diferents fabricants.

Per exemple, pel fitxer de l’exemple anterior (vac_filtrat.txt), la crida:

classifica('vac_filtrat.txt')

retornaria el següent diccionari:

{('ALT EMPORDA', 'BioNTech / Pfizer'): [2, 0],
('CERDANYA', 'BioNTech / Pfizer'): [0, 2],
('CERDANYA', 'Oxford / AstraZeneca'): [1, 0],
('BERGUEDA', 'BioNTech / Pfizer'): [1, 1]}

Disposeu de tests al fitxer test-classifica.txt.