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

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.


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?


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.