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)))
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 groupby
biblioteca 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)))
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