Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

111
Vistas
¿Cómo actualizar diccionarios dentro de dos listas separadas?

Tengo dos listas:

 list1 = [{"name":"xyz" ,"roll":"r" , "sap_id":"z"} , {"name":"pqr" ,"roll":"s" , "sap_id":"w"}] list2 = [{"cn_number":"26455"} , {"cn_number":"26456"}]

Quiero una nueva lista como:

 new_list = [{"name":xyz ,"roll":"r" , "sap_id":"z","cn_number":"26455"} , {"name":"pqr" ,"roll":"s" , "sap_id":"w","cn_number":"26456"}]

Probé el siguiente método:

 new_list = [i.update(j) for i, j in zip(list1, list2)]

pero obtuve un error desagradable

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esta sintaxis funciona para python3.5+ para fusionar dos diccionarios z = {**x, **y}

 Python 3.7.0 (default, Jun 28 2018, 13:15:42) >>> list1 = [{"name":"xyz" ,"roll":"r" , "sap_id":"z"} , {"name":"pqr" ,"roll":"s" , "sap_id":"w"}] >>> list2 = [{"cn_number":"26455"} , {"cn_number":"26456"}] >>> new_list = [{**i, **j} for i, j in zip(list1, list2)] >>> new_list [{'name': 'xyz', 'roll': 'r', 'sap_id': 'z', 'cn_number': '26455'}, {'name': 'pqr', 'roll': 's', 'sap_id': 'w', 'cn_number': '26456'}]

Más información: ¿Cómo fusiono dos diccionarios en una sola expresión (tomar unión de diccionarios)?

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar la sintaxis de combinación de dictados de Python 3.5+ :

 new_list = [{**a, **b} for (a, b) in zip(list1, list2)]

da como resultado

 [ {'name': 'xyz', 'roll': 'r', 'sap_id': 'z', 'cn_number': '26455'}, {'name': 'pqr', 'roll': 's', 'sap_id': 'w', 'cn_number': '26456'}, ]
over 4 years ago · Santiago Trujillo Denunciar

0

Una forma eficiente de hacer esto es con collections.ChainMap que está hecho específicamente para combinar varios diccionarios. Lea más sobre la documentación aquí .

 from collections import ChainMap [dict(ChainMap(i,j)) for i,j in zip(list1, list2)]
 [{'cn_number': '26455', 'name': 'xyz', 'roll': 'r', 'sap_id': 'z'}, {'cn_number': '26456', 'name': 'pqr', 'roll': 's', 'sap_id': 'w'}]

NOTA: Dependiendo de cómo desee usar cada elemento de la lista actualizada, puede usar un generador y evitar usar dict() sobre el objeto ChainMap para obtener lo que necesita sin usar memoria innecesaria. ChainMap le brinda una vista única y actualizable de los múltiples diccionarios al seguir haciendo referencia a los objetos originales.

 #efficient way - #EDITED: lesser keystrokes as suggested by @Kelly g = map(ChainMap, list1, list2) #g = (ChainMap(i,j) for i,j in zip(list1, list2)) next(g).get('sap_id')
 z
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda