Python | Convertir listas de tuplas en listas de valores de diccionario

Uno de los problemas de la interconversión de tipos de datos en python es la conversión de la lista de tuplas a diccionarios, en los que las claves son el primer elemento de la tupla, que se identifican de forma única como claves en el diccionario y su valor correspondiente como lista de valores correspondientes de las claves respectivas como segundo elemento de la tupla. Analicemos cómo resolver este problema en particular.

Método #1: Usar defaultdict() + loop
Este problema se puede resolver fácilmente usando defaultdict() y loop. El dictamen predeterminado proporciona un contenedor de diccionario de valores predeterminado para asignar la lista de valores correspondiente a las claves, de modo que no necesitemos inicializar las claves con una lista vacía y el bucle se usa para extraer valores similares de la tupla.

# Python3 code to demonstrate working of
# Convert list of tuples to dictionary value lists
# Using defaultdict() + loop
from collections import defaultdict
  
# initializing list
test_list = [(1, 'gfg'), (1, 'is'), (2, 'best'), (3, 'for'), (4, 'CS')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Using defaultdict() + loop
# Convert list of tuples to dictionary value lists
res = defaultdict(list)
for i, j in test_list:
    res[i].append(j)
  
# printing result 
print("The merged dictionary is : " + str(dict(res)))
Producción :

La lista original es: [(1, ‘gfg’), (1, ‘es’), (2, ‘mejor’), (3, ‘para’), (4, ‘CS’)]
El diccionario fusionado es : {1: [‘gfg’, ‘es’], 2: [‘mejor’], 3: [‘para’], 4: [‘CS’]}

Método n.º 2: el uso dedefaultdict() + groupby()
este método realiza una tarea similar al método anterior, solo que en lugar de usar el bucle para acceder a cada par de valores clave, aquí usamos la groupbybiblioteca de Python para agrupar claves con valor y convertirlas en una lista.

# Python3 code to demonstrate working of
# Convert list of tuples to dictionary value lists
# Using defaultdict() + groupby()
from collections import defaultdict
from operator import itemgetter
from itertools import groupby
  
# initializing list
test_list = [(1, 'gfg'), (1, 'is'), (2, 'best'), (3, 'for'), (4, 'CS')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Using defaultdict() + groupby()
# Convert list of tuples to dictionary value lists
res = dict((k, [v[1] for v in itr]) for k, itr in groupby(
                                test_list, itemgetter(0)))
  
# printing result 
print("The merged dictionary is : " + str(dict(res)))
Producción :

La lista original es: [(1, ‘gfg’), (1, ‘es’), (2, ‘mejor’), (3, ‘para’), (4, ‘CS’)]
El diccionario fusionado es : {1: [‘gfg’, ‘es’], 2: [‘mejor’], 3: [‘para’], 4: [‘CS’]}

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 *