A veces, mientras trabajamos con Python, podemos tener un problema en el que necesitamos obtener los valores del diccionario de varios diccionarios para encapsularlos en un solo diccionario. Este tipo de problema puede ser común en dominios en los que trabajamos con datos relacionales como en desarrollos web. Analicemos ciertas formas en que se puede resolver este problema.
Método n.º 1: usar el setdefault()
bucle +
Esta tarea se puede realizar usando un bucle anidado y recuperando cada elemento del diccionario y creando una nueva lista para la nueva clave o agregando los valores en caso de que ocurra una clave similar.
# Python3 code to demonstrate working of # Merge Python key values to list # Using setdefault() + loop # Initialize list test_list = [{'gfg' : 2, 'is' : 4, 'best' : 6}, {'it' : 5, 'is' : 7, 'best' : 8}, {'CS' : 10}] # Printing original list print("The original list is : " + str(test_list)) # using setdefault() + loop # Merge Python key values to list res = {} for sub in test_list: for key, val in sub.items(): res.setdefault(key, []).append(val) # printing result print("The merged values encapsulated dictionary is : " + str(res))
La lista original es: [{‘is’: 4, ‘gfg’: 2, ‘best’: 6}, {‘it’: 5, ‘is’: 7, ‘best’: 8}, {‘CS’ : 10}]
El diccionario encapsulado de valores fusionados es: {‘is’: [4, 7], ‘it’: [5], ‘gfg’: [2], ‘CS’: [10], ‘best’: [6, 8]}
Método n.° 2: uso de comprensión de lista + comprensión de diccionario
La combinación de arriba se puede usar para realizar esta tarea en particular. Esto ofrece una sola línea que se puede emplear para esta tarea. Aunque podría ser eficiente en el dominio del rendimiento.
# Python3 code to demonstrate working of # Merge Python key values to list # Using list comprehension + dictionary comprehension # Initialize list test_list = [{'gfg' : 2, 'is' : 4, 'best' : 6}, {'it' : 5, 'is' : 7, 'best' : 8}, {'CS' : 10}] # Printing original list print("The original list is : " + str(test_list)) # using list comprehension + dictionary comprehension # Merge Python key values to list res = {key: list({sub[key] for sub in test_list if key in sub}) for key in {key for sub in test_list for key in sub}} # printing result print("The merged values encapsulated dictionary is : " + str(res))
La lista original es: [{‘is’: 4, ‘gfg’: 2, ‘best’: 6}, {‘it’: 5, ‘is’: 7, ‘best’: 8}, {‘CS’ : 10}]
El diccionario encapsulado de valores fusionados es: {‘is’: [4, 7], ‘it’: [5], ‘gfg’: [2], ‘CS’: [10], ‘best’: [6, 8]}
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA