Biblioteca¶
Un fitxer de text conté la informació de les novetats que s’han rebut a la biblioteca. En el fitxer hi ha una seqüència de llibre. Per cada llibre hi ha quatre etiquetes: “autor:”, “titol:”, “llengua:” i “editorial:”. Després de cada etiqueta hi ha la informació corresponent. Per exemple, la informació d’una obra podria ser:
autor: Albert Sánchez Piñol titol: La pell freda llengua: català editorial: La Campana
En el fitxer hi ha una obra per línia. Suposeu que les etiquetes no poden aparèixer en el títol de les obres. Per exemple, hi pot haver un llibre que es tituli: “A la recerca d’un personatge”, però no una que es tituli: “Busca un autor:”. El contingut d’un fitxer podria ser:
autor: Regina Rodriguez Sirvent titol: Les calces al sol llengua: català editorial: La Campana autor: Joan-Lluís Lluís titol: Junil a les terres dels bàrbars llengua: català editorial: Club Editor autor: Irene Solà titol: Canto jo i la muntanya balla llengua: català editorial: Anagrama autor: Dolly Alderton titol: Everything I know about love llengua: anglès editorial: DK autor: Joan-Lluís Lluís titol: Ulls de sorra llengua: català editorial: Club Editor autor: Maria Climent titol: A casa teníem un himme llengua: català editorial: L'altra Editorial autor: Sally Rooney titol: Normal People llengua: anglès editorial: Faber and faber autor: Marta Marin-Dòminique titol: Diré que m'ho he inventat llengua: català editorial: Edicions 62 autor: Gustave Flaubert titol: Madame Bovary llengua: francès editorial: Hauteville autor: Sergi Pamies titol: A les dues seran les tres llengua: català editorial: Quaderns Crema autor: Eric Chacour titol: Ce que je sais de toi llengua: francès editorial: Alto autor: Alice Hoffman titol: The invisible hour llengua: anglès editorial: Simon and Schuster
Pots descarregar aquest fitxer com exemple: novetats.txt
Dissenyeu una funció anomenada novetats que a partir del nom
d’un fitxer d’aquestes característiques, calculi i retorni un
diccionari que tingui com a claus strings que corresponen a una
llengua i com a valor una llista de tuples. Cada tupla contindrà dos
strings: l’autor de l’obra i el títol d’aquesta. Les llistes
associades a cada llengua estaran ordenades alfabèticament segons el
nom de l’autor i en cas del mateix autor, pel títol de l’obra.
Pel fitxer de l’exemple, la funció hauria de retornar:
>>> d= novetats('novetats.txt') >>> if d!= {'català': [('Irene Solà', 'Canto jo i la muntanya balla'), ... ('Joan-Lluís Lluís', 'Junil a les terres dels bàrbars'), ('Joan-Lluís Lluís', 'Ulls de sorra'), ... ('Maria Climent', 'A casa teníem un himme'), ('Marta Marin-Dòminique', "Diré que m'ho he inventat"), ... ('Regina Rodriguez Sirvent', 'Les calces al sol'), ('Sergi Pamies', 'A les dues seran les tres')], ... 'anglès': [('Alice Hoffman', 'The invisible hour'), ('Dolly Alderton', 'Everything I know about love'), ... ('Sally Rooney', 'Normal People')], ... 'francès': [('Eric Chacour', 'Ce que je sais de toi'), ('Gustave Flaubert', 'Madame Bovary')]}: ... print (d)
Desa la funció al fitxer biblioteca.py. Pots descarregar un joc de proves a test-biblioteca.txt. Pots descarregar una solució a biblioteca.py.