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