Unes dades (o "data") és un conjunt de valors que estan relacionats i que es gestionen com un conjunt.
Introducció
Hi ha variables que estan estretament relacionades entre elles.
Per exemple:
=
=
= 19Per agrupar aquestes dades en un sóla variable i tractar-les de forma conjunta tens tres opcions que estudiem a continuació.
Diccionari
Els diccionaris són estructures flexibles perquè pots afegir i eliminar atributs.
El concepte de diccionari ve del diccionari físic:
A continuació crea el diccionari eva:
= : ,
: ,
: 19
}
{'name': 'Eva', 'surname': 'Vilaregut', 'age': 19}D’aquesta manera tens totes les dades agrupades.
Si vols accedir a l’edat de l’eva, pots utilitzar el nom de l’atribut (o “key”) age:
assert == 19És la mateixa forma d’accedir que fas amb una Llista.
=
assert == 19Però en lloc de fer-ho per posició ho fas per “key”.
I com també passa amb una llista, si la “key” no existeix …
Es produeix un error:
Pots modificar l’edat de l’eva:
{'name': 'Eva', 'surname': 'Vilaregut', 'age': 27}Amb una llista es semblant:
=
= 27
['Eva', 'Vilaregut', 27]Al principi hem dit que un diccionari és una estructura flexible.
Per tant, pots afegir un atribut height a leva:
= 162
{'name': 'Eva', 'surname': 'Vilaregut', 'age': 19, 'height': 162}Amb una llista es semblant:
=
['Eva', 'Vilaregut', 19, 162]O eliminar l’atribut edatde l’eva:
del
{'name': 'Eva', 'surname': 'Vilaregut', 'height': 162}Crea un “dict” d’un cotxe amb els atributs brand, model i year.
Show solution
= Per accedir de manera segura a un “dict” pots utilitzar un accés condicional amb if:
=
assert > 10També pots utilitzar un bucle for per iterar sobre les “keys” de l’eva:
=
Activitat: Llista
A continuació tens una llista de persones:
= ,
,
,
,
,
,
]Quina és l’altura màxima?
Aquí tens dues solucions (una amb for i l’altre més avançada, amb list comprehension).
Show solution
= 0
=
# Mostrem per verificar el resultat esperat.
# print(max)
assert == 182Show solution
=
assert == 182Quina és la mitja d’edat?
Com abans, tens dues solucions (una amb for i l’altre més avançada, amb list comprehension).
Show solution
= 0
= 0
+= 1
+=
= /
assert == 31Show solution
= /
assert == 31Quina és la persona més alta?
Show solution
=
=
assert == Imprimeix per pantalla el nom i el cognom de totes les dones:
Eva Vilaregut
Raquel Viñales
Esther Parra
Laura CasademuntTens dues solucions:
Show solution
[print(f"{person["nom"]} {person["cognom"]}") for person in persons if person["sexe"] == "Dona"]Show solution
[print(f"{person["nom"]} {person["cognom"]}") for person in persons if person["sexe"] == "Dona"]Dataclass
Un dataclass és una estructura fixa.
D’aquesta manera pots estar segur que un atribut existeix, a més que el codi és molt més eficient.
Un dataclass es defineix amb un class anotada amb @dataclass:
:
: A Object ja estudiarem exactament que és una classe.
A continuació crea un pais:
=
Country(name='Spain', size=504030)Però no pots crear un pais amb la seva capital:
=
I també molt important, la IDE t’avisa de que el dataclass Country només té tres atributs:

Modifica el dataclass Country per tal que tingui un atribut capital.
Show solution
:
:
: Crea un dataclass france
Show solution
=
Country(name='France', capital='Paris', size=675417)Continua llegint:
Activitats
A continuació tens una llista de paisos:
= ,
,
]Digues quin és el país més gran?
Show solution
=
=
assert == Tupla
Una tupla és una seqüència de mida fixa:
>>> =
>>>
>>>
>>>
:
, 1, in <>
: És molt més eficient que un dict.
No necessites declarar una class de tipus @dataclass.
TODO
- Python’s tuple Data Type: A Deep Dive With Examples
- Data Classes vs typing.NamedTuple primary use cases
- Python Data Classes vs Named Tuples: Differences You Should Know
Activitat
A continuació tens una llista de paisos:
= ,
,
]1. Digues quin és el país més gran?
Show solution
=
=
assert ==