7.3 Inversió d’un diccionari

Canviar Claus i Valors

Els Diccionaris tenen claus que són úniques i cada clau té un valor associat a ella. Per exemple, un diccionari que mapeja la fruita amb el seu color:

fruit_to_colour = {'watermelon': 'green', 'pomegranate': 'red', 'peach': 'orange', 'cherry': 'red', 'pear': 'green', 'banana': 'yellow', 'plum': 'purple', 'orange': 'orange'}

Per invertir el diccionari, és a dir, canviar el mapeig de colors a fruita. A continuació, es mostra un enfoc:

>>> colour_to_fruit = {}

>>> for fruit in fruit_to_colour:

colour = fruit_to_colour[fruit]

colour_to_fruit[colour] = fruit

>>> colour_to_fruit

{'orange': 'orange', 'purple': 'plum', 'green': 'pear', 'yellow': 'banana', 'red': 'pomegranate'}

Al diccionari resultant hi falten varies fruites. Això succeeix perquè els colors, que són claus, són únics. Com les darreres assignacions utilitzen el mateix color reemplacen les entrades anteriors. Un manera de resoldre això, és mapejar colors a una llista de fruites.

Mapejar una Clau a una Llista

En l’exemple anterior, hem de considerar dos casos, quan afegim un color i una fruita al diccionari.

  1. Si el color no és una clau en el diccionari, afegir-lo amb el seu valor que serà un únic element de la llista de fruites.
  2. Si el color ja és una clau, afegir la fruita a la llista de fruites associades amb aquesta clau.

>>> colour_to_fruit = {}

>>> for fruit in fruit_to_colour:

What colour is the fruit?

colour = fruit_to_colour[fruit]

if not (colour in colour_to_fruit):

colour_to_fruit[colour] = [fruit]

else:

colour_to_fruit[colour].append(fruit)

>>> colour_to_fruit

{'orange': ['peach', 'orange'], 'purple': ['plum'], 'green': ['watermelon', 'pear'], 'yellow': ['banana'], 'red': ['cherry', 'pomegranate']}

results matching ""

    No results matching ""