Python: agrupa la lista de valores similares al diccionario

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))
Producción :

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))
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *