Python | Subgrupos de i-ésimo tamaño de índice en la lista

A veces necesitamos agrupar elementos y las técnicas de agrupación y los requisitos varían en consecuencia. Una de esas formas de agrupar los elementos es por el i-ésimo tamaño en la lista que almacena el diccionario de claves de índice con valores como elementos de lista de tamaño subsiguiente i.

Entrada: [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
Salida: {1: [4], 2: [7, 8], 3: [10, 12, 15], 4: [13, 17, 14, 5]}

Vamos a discutir ciertas formas en que esto se puede hacer.

Método n.º 1: uso de islice()la comprensión del diccionario +
El método de división se puede usar para agrupar los fragmentos de la lista necesarios para crearlos como valores de los diccionarios que luego se asignan a su clave de índice destinada utilizando la comprensión del diccionario.

# Python3 code to demonstrate
# Subgrouping of i'th index size in list
# using islice() + dictionary comprehension
from itertools import islice
  
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using islice() + dictionary comprehension
# Subgrouping of i'th index size in list
temp = iter(test_list)
res = {key: val for key, val in ((i, list(islice(temp, i)))
                for i in range(1, len(test_list))) if val}
  
# printing result
print("The grouped dictionary is : " + str(res))
Producción :

La lista original: [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
El diccionario agrupado es: {1: [4], 2: [7, 8], 3: [10, 12, 15], 4: [13, 17, 14, 5]}

Método n.º 2: usoitemgetter() + takewhile() + islice()
Para aumentar la velocidad de cálculo, presentamos nuevas funciones para realizar esta tarea en particular, las funciones takewhile y itemgetter que realizan la tarea de agrupar los valores divididos.

# Python3 code to demonstrate
# Subgrouping of i'th index size in list
# using itemgetter() + takewhile() + islice()
from itertools import islice, takewhile
from operator import itemgetter
  
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using itemgetter() + takewhile() + islice()
# Subgrouping of i'th index size in list
temp = iter(test_list)
res =  {key: val for key, val in 
        takewhile(itemgetter(1), ((i, list(islice(temp, i)))
        for i in range(1, len(test_list))))}
  
# printing result
print("The grouped dictionary is : " + str(res))
Producción :

La lista original: [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
El diccionario agrupado es: {1: [4], 2: [7, 8], 3: [10, 12, 15], 4: [13, 17, 14, 5]}

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 *