A veces, mientras trabajamos con la lista de Python, podemos tener un problema en el que necesitamos agrupar índices de listas de valores similares a valores en un diccionario. Esto puede tener una buena aplicación en dominios en los que necesitamos un diccionario agrupado como salida para un par de listas. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Usar la comprensión del diccionario
Esta es la forma en que se puede realizar esta tarea. En esto, iteramos una lista junto con otra y seguimos construyendo un diccionario con una clave similar de una lista y los valores correspondientes de otra. Esta es una solución de una sola línea.
# Python3 code to demonstrate # Group similar value list to dictionary # using dictionary comprehension # Initializing lists test_list1 = [4, 4, 4, 5, 5, 6, 6, 6, 6] test_list2 = ['G', 'f', 'g', 'i', 's', 'b', 'e', 's', 't'] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # Group similar value list to dictionary # using dictionary comprehension res = {key : [test_list2[idx] for idx in range(len(test_list2)) if test_list1[idx]== key] for key in set(test_list1)} # printing result print ("Mapped resultant dictionary : " + str(res))
La lista original 1 es: [4, 4, 4, 5, 5, 6, 6, 6, 6]
La lista original 2 es: [‘G’, ‘f’, ‘g’, ‘i’, ‘s ‘, ‘b’, ‘e’, ’s’, ‘t’]
Diccionario resultante asignado: {4: [‘G’, ‘f’, ‘g’], 5: [‘i’, ‘s’] , 6: [‘b’, ‘e’, ’s’, ‘t’]}
Método n.º 2: Uso defaultdict()
del bucle +
Esta es otra forma más en la que se puede realizar esta tarea. En esto, evitamos probar la presencia de claves en el diccionario creando un dictamen predeterminado().
# Python3 code to demonstrate # Group similar value list to dictionary # using defaultdict() + loop from collections import defaultdict # Initializing lists test_list1 = [4, 4, 4, 5, 5, 6, 6, 6, 6] test_list2 = ['G', 'f', 'g', 'i', 's', 'b', 'e', 's', 't'] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # Group similar value list to dictionary # using defaultdict() + loop res = defaultdict(set) for key, val in zip(test_list1, test_list2): res[key].add(val) res = {key: list(val) for key, val in res.items()} # printing result print ("Mapped resultant dictionary : " + str(res))
La lista original 1 es: [4, 4, 4, 5, 5, 6, 6, 6, 6]
La lista original 2 es: [‘G’, ‘f’, ‘g’, ‘i’, ‘s ‘, ‘b’, ‘e’, ’s’, ‘t’]
Diccionario resultante asignado: {4: [‘G’, ‘f’, ‘g’], 5: [‘i’, ‘s’] , 6: [‘b’, ‘e’, ’s’, ‘t’]}
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