[python] Agregar nuevas claves a un diccionario?


8 Answers

>>> x = {1:2}
>>> print x
{1: 2}

>>> x.update({3:4})
>>> print x
{1: 2, 3: 4}
Question

¿Es posible agregar una clave a un diccionario de Python después de haber sido creado? No parece tener un método .add() .




Tantas respuestas y aún todo el mundo se olvidó de los extrañamente nombrados, extrañamente educados y aún así dict.setdefault()

Esta

value = my_dict.setdefault(key, default)

básicamente solo hace esto:

try:
    value = my_dict[key]
except KeyError: # key not found
    value = my_dict[key] = default

p.ej

>>> mydict = {'a':1, 'b':2, 'c':3}
>>> mydict.setdefault('d', 4)
4 # returns new value at mydict['d']
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # a new key/value pair was indeed added
# but see what happens when trying it on an existing key...
>>> mydict.setdefault('a', 111)
1 # old value was returned
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # existing key was ignored



Sí, es bastante fácil. Solo haz lo siguiente:

dict["key"] = "value"



Use el operador de asignación de subíndice:

d['x'] = "value"

No olvides que la clave de Python puede tener cualquier cosa que pueda ser transferible, lo que significa bool , int , string incluso una tupla o cualquier objeto hashable.




Esta popular pregunta aborda los métodos funcionales para fusionar los diccionarios a y b .

Estos son algunos de los métodos más directos (probados en Python 3) ...

c = dict( a, **b ) ## see also https://.com/q/2255878
c = dict( list(a.items()) + list(b.items()) )
c = dict( i for d in [a,b] for i in d.items() )

Nota: El primer método anterior solo funciona si las claves en b son cadenas.

Para agregar o modificar un solo elemento , el diccionario b solo contendría ese elemento ...

c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a'

Esto es equivalente a ...

def functional_dict_add( dictionary, key, value ):
   temp = dictionary.copy()
   temp[key] = value
   return temp

c = functional_dict_add( a, 'd', 'dog' )



Así es exactamente como lo haría: # datos fijos con sapce

data = {}
data['f'] = 'F'
data['c'] = 'C'

for key, value in data.iteritems():
    print "%s-%s" % (key, value)

Esto funciona para mí ¡Disfrutar!







Tiene un método de actualización que puede usar así:

dict.update({"key" : "value"})




dictionary[key] = value



Related