Por ejemplo, tengo una lista de 3 valores:

['California', 'Colorado', 'Connecticut']

¿Cómo agregar los valores a la lista de diccionario con la misma longitud de lista?

[{'abbrev': 'CA', 'slug': 'ca'}, {'abbrev': 'CO', 'slug': 'co'}, {'abbrev': 'CT', 'slug': 'ct'}]

En el resultado necesito la lista de diccionarios como se muestra a continuación

[{'title':'California', 'abbrev': 'CA', 'slug': 'ca'}, {'title':'Colorado', 'abbrev': 'CO', 'slug': 'co'}, {'title': 'Connecticut', 'abbrev': 'CT', 'slug': 'ct'}]

¡Gracias!

0
dtar 2 oct. 2019 a las 22:38

3 respuestas

La mejor respuesta

Puede usar zip para iterar en paralelo sobre ambas listas:

states = ['California', 'Colorado', 'Connecticut']
ds = [{'abbrev': 'CA', 'slug': 'ca'}, {'abbrev': 'CO', 'slug': 'co'}, {'abbrev': 'CT', 'slug': 'ct'}]

for title, d in zip(states, ds):
    d['title'] = title

Salida

[{'abbrev': 'CA', 'slug': 'ca', 'title': 'California'}, {'abbrev': 'CO', 'slug': 'co', 'title': 'Colorado'}, {'abbrev': 'CT', 'slug': 'ct', 'title': 'Connecticut'}]
3
Dani Mesejo 2 oct. 2019 a las 19:41

Puedes hacerlo de esta manera:

states = ['California', 'Colorado', 'Connecticut']
ds = [{'abbrev': 'CA', 'slug': 'ca'}, {'abbrev': 'CO', 'slug': 'co'}, {'abbrev': 'CT', 'slug': 'ct'}]
title = dict(zip(states, ds))
title

Salida:

{'California': {'abbrev': 'CA', 'slug': 'ca'},
 'Colorado': {'abbrev': 'CO', 'slug': 'co'},
 'Connecticut': {'abbrev': 'CT', 'slug': 'ct'}}
0
PythonHelper 2 oct. 2019 a las 20:01

Usando update puede agregar una clave con un valor a un diccionario, sin embargo, se agregará al final.

b = [{'abbrev': 'CA', 'slug': 'ca'}, {'abbrev': 'CO', 'slug': 'co'}, {'abbrev': 'CT', 'slug': 'ct'}]
a = ['California', 'Colorado', 'Connecticut']
for i in range(len(a)):
    b[i].update({'title':a[i]})
print(b)

Salida:

[{'abbrev': 'CA', 'slug': 'ca', 'title': 'California'}, {'abbrev': 'CO', 'slug': 'co', 'title': 'Colorado'}, {'abbrev': 'CT', 'slug': 'ct', 'title': 'Connecticut'}]
1
Celius Stingher 2 oct. 2019 a las 19:43
58208309