Programa Python para crear un subdiccionario que contenga todas las claves de la lista de diccionarios

Dada la lista de diccionarios, nuestra tarea es crear una nueva lista de diccionarios que contenga todas las claves, si no, entonces asigne Ninguno a la clave y persista de cada diccionario.

Ejemplo:

Entrada: test_list = [{‘gfg’: 3, ‘es’: 7}, {‘gfg’: 3, ‘es’: 1, ‘mejor’: 5}, {‘gfg’: 8}]

Salida: [{‘es’: 7, ‘mejor’: ninguno, ‘gfg’: 3}, {‘es’: 1, ‘mejor’: 5, ‘gfg’: 3}, {‘es’: ninguno, ‘mejor’: Ninguno, ‘gfg’: 8}]

Explicación: los elementos con «es» y «mejor» se agregan a todas las listas, siempre que falten como Ninguno si no se completa ningún valor.

Entrada: test_list = [{‘gfg’: 3}, {‘gfg’: 3, ‘mejor’: 5}, {‘gfg’: 8}]

Salida: [{‘mejor’: Ninguno, ‘gfg’: 3}, {‘mejor’: 5, ‘gfg’: 3}, {‘mejor’: Ninguno, ‘gfg’: 8}]

Explicación: los elementos con «mejor» se agregan a todas las listas, siempre que falten como Ninguno si no se completa ningún valor.

Método #1: Usar set() + chain.from_iterable() + get() + comprensión de lista

En esto, realizamos la tarea de obtener todas las claves requeridas usando set() y chain.from_iterable(). El siguiente paso es actualizar todos los diccionarios con claves no encontradas usando comprensión de lista y get().

Python3

# Python3 code to demonstrate working of
# Ensure all keys in dictionary list
# Using set() + chain.from_iterable() + get() + list comprehension
from itertools import chain
 
# initializing list
test_list = [{'gfg' : 3, 'is' : 7},
             {'gfg' : 3, 'is' : 1, 'best' : 5},
             {'gfg' : 8}]
              
# printing original list
print("The original list is : " + str(test_list))
 
# extracting all keys
all_keys = set(chain.from_iterable(test_list))
 
# assigning None using get() if key's value is not found
res = [dict((key, sub.get(key, None)) for key in all_keys) for sub in test_list]
 
# printing result
print("Reformed dictionaries list : " + str(res))

Producción:

La lista original es: [{‘gfg’: 3, ‘is’: 7}, {‘gfg’: 3, ‘is’: 1, ‘best’: 5}, {‘gfg’: 8}]

Lista de diccionarios reformados: [{‘gfg’: 3, ‘mejor’: Ninguno, ‘es’: 7}, {‘gfg’: 3, ‘mejor’: 5, ‘es’: 1}, {‘gfg’: 8, ‘mejor’: ninguno, ‘es’: ninguno}]

Método #2: Usando set() + chain.from_iterable() + update()

En esto, la actualización y verificación de todas las claves del diccionario se realiza mediante update(), el resto de las funciones siguen siendo similares. 

Python3

# Python3 code to demonstrate working of
# Ensure all keys in dictionary list
# Using set() + chain.from_iterable() + update()
from itertools import chain
 
# initializing list
test_list = [{'gfg' : 3, 'is' : 7},
             {'gfg' : 3, 'is' : 1, 'best' : 5},
             {'gfg' : 8}]
              
# printing original list
print("The original list is : " + str(test_list))
 
# extracting all keys
all_keys = set(chain.from_iterable(test_list))
 
# assigning None using update() if key is not found
for sub in test_list:
    sub.update({key: None for key in all_keys if key not in sub})
 
# printing result
print("Reformed dictionaries list : " + str(test_list))

Producción:

La lista original es: [{‘gfg’: 3, ‘is’: 7}, {‘gfg’: 3, ‘is’: 1, ‘best’: 5}, {‘gfg’: 8}]

Lista de diccionarios reformados: [{‘gfg’: 3, ‘mejor’: Ninguno, ‘es’: 7}, {‘gfg’: 3, ‘mejor’: 5, ‘es’: 1}, {‘gfg’: 8, ‘mejor’: ninguno, ‘es’: ninguno}]

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *