¿Cómo agregar múltiples valores a una clave de diccionario en Python? [cerrado]

84

Quiero agregar varios valores a una clave específica en un diccionario de Python. ¿Cómo puedo hacer eso?

a = {}
a["abc"] = 1
a["abc"] = 2

Esto reemplazará el valor de a ["abc"] de 1 a 2.

En cambio, lo que quiero es que un ["abc"] tenga varios valores (tanto 1 como 2).

PythonEntusiasta
fuente

Respuestas:

161

Haga del valor una lista, p. Ej.

a["abc"] = [1, 2, "bob"]

ACTUALIZAR:

Hay un par de formas de agregar valores a la clave y de crear una lista si aún no existe. Mostraré uno de esos métodos en pequeños pasos.

key = "somekey"
a.setdefault(key, [])
a[key].append(1)

Resultados:

>>> a
{'somekey': [1]}

A continuación, intente:

key = "somekey"
a.setdefault(key, [])
a[key].append(2)

Resultados:

>>> a
{'somekey': [1, 2]}

La magia de setdefaultes que inicializa el valor de esa clave si esa clave no está definida; de lo contrario, no hace nada. Ahora, teniendo en cuenta que setdefaultdevuelve la clave, puede combinarlos en una sola línea:

a.setdefault("somekey",[]).append("bob")

Resultados:

>>> a
{'somekey': [1, 2, 'bob']}

Debería mirar los dictmétodos, en particular el get()método, y hacer algunos experimentos para sentirse cómodo con esto.

Presidente James K. Polk
fuente
8
eche un vistazo a los horarios publicados: ambos dimos la misma respuesta exactamente al mismo tiempo, hasta el segundo :)
MattDMo
Quiero agregar uno por uno.
PythonEnthusiast
1
Como si proporciono una clave y un valor a una función. Si la clave ya está allí, debe agregar el nuevo valor a la clave.
PythonEnthusiast
1
Puede comprobar si type (a ["abc"]) == list. Si no es así, cree una nueva lista con ese elemento como el primer elemento de esa lista.
octref
2
Gracias, me gustó mucho a.setdefault ("somekey", []). Append ("bob")
ARH
22

Qué tal si

a["abc"] = [1, 2]

Esto resultará en:

>>> a
{'abc': [1, 2]}

¿Es eso lo que estabas buscando?

MattDMo
fuente
Quiero agregar uno por uno. como a ["abc"] = 1 y a ["abc"] = "def"
PythonEnthusiast
@ user1162512 a ["abc"]. append ("def")
octref
¿Qué pasa si no quiero usar la lista? ¿Todavía puedo agregar el valor? Por ejemplo: tengo un dict a ["abc": 1]. Ahora quiero agregar "def" a la tecla "abc". ¿Cómo puedo hacer eso?
PythonEnthusiast
2
@ user1162512 si desea tener más de un valor para una determinada clave, entonces necesitará usar una lista o algún otro contenedor para múltiples valores (otro dict, una tupla, etc.). No se puede hacer {"abc": 1, 2}ya que un dict es un par clave: valor, con solo un valor por clave.
MattDMo
2
Somos gemelos pitón :)
Presidente James K. Polk