Python | Top N pares por K-ésimo elemento de la lista

A veces, mientras trabajamos con datos, podemos tener un problema en el que necesitamos obtener el máximo de elementos filtrados por el K-ésimo elemento de registro. Esto tiene una utilidad muy importante en el dominio del desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Usar filter() + lambda + set()+ comprensión de lista

La combinación de las funciones anteriores se puede utilizar para realizar esta función en particular. En esto, primero filtramos los N elementos principales del índice Kth y luego aplicamos estos valores a la lista y devolvemos el resultado.

# Python3 code to demonstrate working of
# Top N pairs by Kth element from list
# Using filter() + lambda + set() + list comprehension
  
# initialize list 
test_list = [('gfg', 4, 'good'), ('gfg', 2, 'better'), 
             ('gfg', 1, 'best'), ('gfg', 3, 'geeks')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initialize N 
N = 3 
  
# initialize K 
K = 1
  
# Top N pairs by Kth element from list
# Using filter() + lambda + set() + list comprehension
temp = set(list({sub[K] for sub in test_list})[-N:])
res = list(filter(lambda sub: sub[K] in temp, test_list))
  
# printing result
print("Top N elements of Kth index are : " + str(res))
Producción :

La lista original es: [(‘gfg’, 4, ‘bueno’), (‘gfg’, 2, ‘mejor’), (‘gfg’, 1, ‘mejor’), (‘gfg’, 3, ‘ geeks’)]
Los N elementos principales del índice Kth son: [(‘gfg’, 4, ‘good’), (‘gfg’, 2, ‘better’), (‘gfg’, 3, ‘geeks’)]

Método #2: Usar groupby() + sorted()+ bucle

Esta tarea también se puede realizar utilizando las funcionalidades anteriores. En esto, primero agrupamos los N elementos principales y luego limitamos por N mientras construimos la lista de resultados.

# Python3 code to demonstrate working of
# Top N pairs by Kth element from list
# Using groupby() + sorted() + loop
import itertools
  
# initialize list 
test_list = [('gfg', 4, 'good'), ('gfg', 2, 'better'),
             ('gfg', 1, 'best'), ('gfg', 3, 'geeks')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initialize N 
N = 3 
  
# initialize K 
K = 1
  
# Top N pairs by Kth element from list
# Using groupby() + sorted() + loop
res = []
temp = itertools.groupby(sorted(test_list, key = lambda sub : sub[K], 
                          reverse = True), key = lambda sub : sub[K])
for i in range(N):
    res.extend(list(next(temp)[K]))
  
# printing result
print("Top N elements of Kth index are : " + str(res))
Producción :

La lista original es: [(‘gfg’, 4, ‘bueno’), (‘gfg’, 2, ‘mejor’), (‘gfg’, 1, ‘mejor’), (‘gfg’, 3, ‘ geeks’)]
Los N elementos principales del índice Kth son: [(‘gfg’, 4, ‘good’), (‘gfg’, 2, ‘better’), (‘gfg’, 3, ‘geeks’)]

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 *