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:

    eng2cat = {}
    eng2cat['one'] = 'un'
    eng2cat['two'] = 'dos'
    
  • Llista de parelles clau-valor:

    eng2cat = {'two': 'dos', 'one': 'un', 'three' : 'tres'}
    

Operacions

  • Pertinença: la clau pertany al diccionari?

    'two' in eng2cat
    
  • Accés: consulta del valor associat a una clau.

    eng2cat['two']
    
  • Modificació: modificar el valor associat a una clau.

    eng2cat['two'] = 2
    
  • Esborrat: esborrar una parella clau-valor.

    del eng2cat['two']
    
  • Longitud: nombre de parells clau-valor.

    len(eng2cat)
    

Recorregut de diccionaris

  • Regorregut de les claus.

    for clau in eng2cat:
        sentències
    
  • No són imprescindibles, però en alguns problemes poden resultar útils:

    • Recorregut de les parells clau-valor.

      for clau, valor in eng2cat.items():
          sentències
      
      • candidats.can_mes_votat(), topics/_exercises/dict/Directius/index 2.

    • Recorregut dels valors.

      for valor in eng2cat.values():
          sentències
      
      • candidats.vots_minim().

Conversió de tipus

  • De diccionari a llista:

    • La llista de les claus del diccionari:

      >>> d = {1: 'u', 'dos': 2}
      >>> list(d)
      [1, 'dos']
      
    • La llista de les parelles clau-valor del diccionari:

      >>> d = {1: 'u', 'dos': 2}
      >>> list(d.items())
      [(1, 'u'), ('dos', 2)]
      
    • La llista dels valors del diccionari:

      >>> 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.

    >>> 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 copy().

    opposites = {'up': 'down', 'right': 'wrong', 'true': 'false'}
    alias = opposites
    copy = opposites.copy()
    

Exercicis

  • Creació de diccionaris: topics/_exercises/dict/Aparicions_de_lletres/index.

  • Funcions modificadores de diccionaris: topics/_exercises/dict/Botiga_de_roba/index 1.

  • Els valors són llistes: topics/_exercises/dict/Coral_1/index 1.

  • Relació de dos diccionaris: candidats.vots_ingressos(), candidats.rics(), topics/_exercises/dict/Coral_1/index 2.