1. Estoc llibreria (3 Punts)¶
Es demana que al fitxer llibreria.py facis la funció
- classifica(d_stoc, llengua)¶
on d_stoc és un diccionari amb la informació de tots els llibres
que hi ha en una llibreria. En aquest diccionari les claus són strings
que representen els diferents gèneres literaris. El valor associat a
cada clau és un diccionari amb la informació de tots els llibres que
hi ha d’aquest gènere. En aquest diccionari, les claus són strings que
representen les diferents llengües amb les quals trobem llibres en la
llibreria. El valor és una llista de tuples, una tupla per a cada
obra, amb el títol de l’obra i l’autor/autora.
El segon paràmetre de la funció, llengua, és un string que
representa una llengua.
Podem observar un exemple de diccionari com el descrit tot seguit:
>>> d={'Narrativa': {'Catala': [('Isabel Clara Simó', 'Júlia'),
... ('Glòria Llobet', 'El cor de les pedres'), ('Isabel Clara Simó', 'La Nati')],
... 'Angles': [('Sally Rooney', 'Normal people'), ('Colleen Hoover', 'It Starts with us'),
... ('Cormac Maccarthy', 'The passenger')]},
... 'Poesia': {'Catala': [('Gabriel Ferrater', 'Les dones i els dies'),
... ('Carles Riba', 'Llibres de poesia'), ('Maria Mercè Marçal', 'Desglaç')],
... 'Espanyol': [('Federico Garcia Lorca', 'Poemas esenciales'), ('Elvira Sastre', 'Adiós al frío'),
... ('Sara Búho', 'La ataraxia del corazón'), ('Mario Benedetti', 'El amor, las mujeres y la vida')]}}
Aquest diccionari de l’exemple té dues claus: 'Narrativa' i
'Poesia'. En aquest cas, cada una de les claus té associat un
diccionari també de longitud dos. En el cas de 'Narrativa', les
claus corresponen a les llengües 'Catala' i 'Angles', amb
valors llistes de tuples.
La funció que demanen ha de retornar un diccionari on la clau són els diferents gèneres literaris en els quals hi ha algun llibre escrit en la llengua donada i el corresponent valor és el nombre de llibres d’aquest gènere que hi ha en aquesta llengua. Només apareixen en el diccionari aquells gèneres pels quals hi ha almenys un llibre en la llengua donada.
Aquí tens uns doctests d’exemple que utilitzen el diccionari anterior:
>>> d_ini={'Viatge':{'Catala': [('Gabriel Pernau', 'A la Xina en bicicleta')]}}
>>> classifica(d_ini, 'Catala')
{'Viatge': 1}
>>> classifica(d_ini, 'Espanyol')
{}
>>> d={'Narrativa': {'Catala': [('Isabel Clara Simó', 'Júlia'),
... ('Glòria Llobet', 'El cor de les pedres'), ('Isabel Clara Simó', 'La Nati')],
... 'Angles': [('Sally Rooney', 'Normal people'), ('Colleen Hoover', 'It Starts with us'),
... ('Cormac Maccarthy', 'The passenger')]},
... 'Poesia': {'Catala': [('Gabriel Ferrater', 'Les dones i els dies'),
... ('Carles Riba', 'Llibres de poesia'), ('Maria Mercè Marçal', 'Desglaç')],
... 'Espanyol': [('Federico Garcia Lorca', 'Poemas esenciales'), ('Elvira Sastre', 'Adiós al frío'),
... ('Sara Búho', 'La ataraxia del corazón'), ('Mario Benedetti', 'El amor, las mujeres y la vida')]}}
>>> d2=classifica(d, 'Catala')
>>> d2=={'Narrativa': 3, 'Poesia': 3}
True
>>> d3=classifica(d, 'Angles')
>>> d3
{'Narrativa': 3}
>>> d4=classifica(d, 'Espanyol')
>>> if d4!={'Poesia': 4}:
... print(d4)
>>> d5=classifica(d, 'Xinés')
>>> if d5!={}:
... print(d5)
Trobaràs més tests al fitxer test-llibreria.txt, i una solució a llibreria.py