Python: agrupa diccionarios de un solo elemento en valores de lista

Dada la Lista de diccionarios de un solo elemento, agrúpelos en listas de valores de diccionario de acuerdo con valores similares. 

Entrada : [{“Gfg”: 3}, {“es”: 8}, {“Gfg”: 18}, {“Mejor”: 33}]
Salida : {‘Gfg’: [3, 18], ‘es ‘: [8], ‘Best’: [33]}
Explicación : Cada tecla convertida a valores de lista y diccionario.

Entrada : [{“Gfg”: 3}, {“Gfg”: 8}, {“Gfg”: 18}, {“Best”: 33}]
Salida : {‘Gfg’: [3, 18, 8], ‘Best’: [33]}
Explicación : Cada clave convertida a valores de lista y diccionario.

 Método #1: Usar setdefault() + bucle

Esta es la forma bruta en la que se puede realizar esta tarea. En esto, usamos para recorrer todos los valores del diccionario y setdefault() se usa para asignar la clave común a sus correspondientes listas de valores agrupados.

Python3

# Python3 code to demonstrate working of 
# Group single item dictionaries into List values
# Using setdefault() + loop
  
# initializing lists
test_list = [{"Gfg" : 3}, {"is": 8}, {"Best": 10}, {"Gfg": 18}, {"Best": 33}]
  
# printing original list
print("The original list : " + str(test_list))
  
res = {}
  
# using loop to loop through each dictionary
for idx in test_list:
      
    # items() to extract item
    for key, val in idx.items():
          
        # setdefault performs task of setting empty list value as default
        res.setdefault(key, []).append(val)
  
# printing result 
print("The constructed dictionary : " + str(res))
Producción

The original list : [{'Gfg': 3}, {'is': 8}, {'Best': 10}, {'Gfg': 18}, {'Best': 33}]
The constructed dictionary : {'Gfg': [3, 18], 'is': [8], 'Best': [10, 33]}

Método #2: Usando defaultdict() + * operador + bucle

Esta es otra forma más en la que se puede realizar esta tarea. En esto, usamos defaultdict() para la inicialización de listas vacías. El operador * se usa para desempaquetar el elemento del diccionario y el bucle se usa para recorrer los diccionarios.

Python3

# Python3 code to demonstrate working of 
# Group single item dictionaries into List values
# Using defaultdict() + * operator + loop
from collections import defaultdict
  
# initializing lists
test_list = [{"Gfg" : 3}, {"is": 8}, {"Best": 10}, {"Gfg": 18}, {"Best": 33}]
  
# printing original list
print("The original list : " + str(test_list))
  
res = defaultdict(list)
for ele in test_list:
      
    # using * operator to unpack
    # reducing one loop
    key, val = tuple(*ele.items())
    res[key].append(val)
  
# printing result 
print("The constructed dictionary : " + str(dict(res)))
Producción

The original list : [{'Gfg': 3}, {'is': 8}, {'Best': 10}, {'Gfg': 18}, {'Best': 33}]
The constructed dictionary : {'Gfg': [3, 18], 'is': [8], 'Best': [10, 33]}

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 *