En aquesta secció s’explica com afegir elements nous a un diccionari (objecte de tipus dict) o actualitzar el valor d’un element existent a Python. També és possible concatenar (unir, combinar) diversos diccionaris.
- Afegiu i actualitzeu elements al diccionari especificant claus.
- Concatenació (fusió) de diversos diccionaris: update (), | operador, | = operador
- Afegiu o actualitzeu diversos elements: update (), | = operador
Afegiu i actualitzeu elements al diccionari especificant claus.
Podeu afegir / actualitzar elements del diccionari de la següent manera.
Objecte del diccionari [clau] = valor
Quan s’especifica una clau inexistent, s’afegeix un element nou i, quan s’especifica una clau existent, s’actualitza el valor existent (sobreescrit).
d = {'k1': 1, 'k2': 2}
d['k3'] = 3
print(d)
# {'k1': 1, 'k2': 2, 'k3': 3}
d['k1'] = 100
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3}
Si no voleu actualitzar el valor d’una clau que existeix, utilitzeu el mètode setdefault ().
Concatenar (combinar) diversos diccionaris: update (), | operador, | = operador
update()
Si s’especifica un altre objecte de diccionari com a argument al mètode update () de l’objecte de diccionari, s’afegiran tots els seus elements.
Si la clau se superposa a una clau existent, se sobreescriurà amb el valor del diccionari especificat a l’argument.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1.update(d2)
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
És un error especificar diversos diccionaris a l’argument update ().
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
# d1.update(d2, d3)
# TypeError: update expected at most 1 arguments, got 2
Com s’explica més endavant, update () pot afegir elements nous com a arguments de paraules clau (clau = valor), així que només cal afegir ** al diccionari i ampliar cada element com a argument de paraula clau i passar-lo.
d1.update(**d2, **d3)
print(d1)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
Com en els exemples anteriors, mitjançant update () s’actualitzarà l’objecte de diccionari original.
Si voleu generar un diccionari nou combinant diversos diccionaris, utilitzeu {** d1, ** d2} (de Python 3.5) o dict (** d1, ** d2).
A Python 3.9 i versions posteriors, també és possible crear un diccionari nou amb el | operador descrit a continuació.
| operador, | = operador (Python 3.9 i versions posteriors)
Des de Python 3.9, és possible combinar dos diccionaris amb el | operador. Quan dos diccionaris tenen la mateixa clau, el valor de la dreta té prioritat.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
print(d1 | d2)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
print(d2 | d1)
# {'k1': 1, 'k3': 3, 'k4': 4, 'k2': 2}
| També és possible combinar diversos diccionaris mitjançant una sèrie d’operadors.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k3': 3, 'k4': 4}
d3 = {'k5': 5, 'k6': 6}
print(d1 | d2 | d3)
# {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4, 'k5': 5, 'k6': 6}
+ Igual que amb update (), l’objecte del costat esquerre s’actualitza.
d1 = {'k1': 1, 'k2': 2}
d2 = {'k1': 100, 'k3': 3, 'k4': 4}
d1 |= d2
print(d1)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Afegiu o actualitzeu diversos elements: update (), | = operador
update()
Quan s’especifica l’argument de paraula clau clau = valor al mètode update (), s’afegiran la clau de clau i el valor. Si la clau se superposa a una clau existent, se sobreescriurà amb el valor especificat a l’argument.
d = {'k1': 1, 'k2': 2}
d.update(k1=100, k3=3, k4=4)
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
També és possible especificar una llista de (clau, valor) com a argument del mètode update (). Si la clau se superposa a una clau existent, se sobreescriurà amb el valor especificat com a argument.
d = {'k1': 1, 'k2': 2}
d.update([('k1', 100), ('k3', 3), ('k4', 4)])
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
En combinació amb la funció zip (), es poden afegir elements des d’una llista de tecles i una llista de valors.
d = {'k1': 1, 'k2': 2}
keys = ['k1', 'k3', 'k4']
values = [100, 3, 4]
d.update(zip(keys, values))
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
| = operador (Python 3.9 i versions posteriors)
Amb l’operador | =, es pot especificar una llista de (clau, valor) a la part dreta.
d = {'k1': 1, 'k2': 2}
d |= [('k1', 100), ('k3', 3), ('k4', 4)]
print(d)
# {'k1': 100, 'k2': 2, 'k3': 3, 'k4': 4}
Tingueu en compte que especificar una llista amb | l’operador produirà un error. Només s’admeten les operacions de diccionari a diccionari.
# print(d | [('k1', 100), ('k3', 3), ('k4', 4)])
# TypeError: unsupported operand type(s) for |: 'dict' and 'list'