Dictionaries ============ - El **diccionari** és el tipus associatiu predefinit de Python. - Un **tipus associatiu** associa **claus** a valors. Les claus han de ser de tipus immutables. - Per tant, els diccionaris són tipus compostos i mutables. Creant diccionaris ------------------ - Diccionari buit i afegint parelles clau-valor: .. sourcecode:: python eng2cat = {} eng2cat['one'] = 'un' eng2cat['two'] = 'dos' - Llista de parelles clau-valor: .. sourcecode:: python eng2cat = {'two': 'dos', 'one': 'un', 'three' : 'tres'} Operacions ---------- - Pertinença: la clau pertany al diccionari? .. sourcecode:: python 'two' in eng2cat - Accés: consulta del valor associat a una clau. .. sourcecode:: python eng2cat['two'] - Modificació: modificar el valor associat a una clau. .. sourcecode:: python eng2cat['two'] = 2 - Esborrat: esborrar una parella clau-valor. .. sourcecode:: python del eng2cat['two'] - Longitud: nombre de parells clau-valor. .. sourcecode:: python len(eng2cat) Recorregut de diccionaris ------------------------- - Regorregut de les claus. .. sourcecode:: python for clau in eng2cat: sentències - No són imprescindibles, però en alguns problemes poden resultar útils: - Recorregut de les parells clau-valor. .. sourcecode:: python for clau, valor in eng2cat.items(): sentències - :py:func:`candidats.can_mes_votat`, :py:doc:`topics/_exercises/dict/Directius/index` 2. - Recorregut dels valors. .. sourcecode:: python for valor in eng2cat.values(): sentències - :py:func:`candidats.vots_minim`. Conversió de tipus ------------------ - De diccionari a llista: - La llista de les claus del diccionari: .. code-block:: pycon >>> d = {1: 'u', 'dos': 2} >>> list(d) [1, 'dos'] - La llista de les parelles clau-valor del diccionari: .. code-block:: pycon >>> d = {1: 'u', 'dos': 2} >>> list(d.items()) [(1, 'u'), ('dos', 2)] - La llista dels valors del diccionari: .. code-block:: pycon >>> d = {1: 'u', 'dos': 2} >>> list(d.values()) ['u', 2] - De llista a diccionari només és possible si els elements de la llista són parelles clau-valor. .. code-block:: pycon >>> l = [('a', 3), ('b', 9), ('c', 5)] >>> dict(l) {'c': 5, 'a': 3, 'b': 9} Àlies i còpies -------------- - Els diccionaris són mutables: l'assignació genera un àlies. - Com obtenir-ne una còpia? Mètode :py:meth:`~dict.copy`. .. sourcecode:: python opposites = {'up': 'down', 'right': 'wrong', 'true': 'false'} alias = opposites copy = opposites.copy() Exercicis --------- - Creació de diccionaris: :py:doc:`topics/_exercises/dict/Aparicions_de_lletres/index`. - Funcions modificadores de diccionaris: :py:doc:`topics/_exercises/dict/Botiga_de_roba/index` 1. - Els valors són llistes: :py:doc:`topics/_exercises/dict/Coral_1/index` 1. - Relació de dos diccionaris: :py:func:`candidats.vots_ingressos`, :py:func:`candidats.rics`, :py:doc:`topics/_exercises/dict/Coral_1/index` 2.