Python: tuplas posicionadas Kth únicas

A veces, mientras trabajamos con registros de Python, podemos tener un problema en el que necesitamos extraer solo las tuplas únicas, en función de algún índice particular de tuplas. Este tipo de problema puede tener aplicaciones en dominios como el desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada :
test_list = [(5, 6, 5), (4, 2, 7), (1, 2, 3), (9, 6, 5)]
K = 3
Salida : [(1, 2, 3) , (5, 6, 5), (4, 2, 7)]
Entrada :
test_list = [(5, ), (1, ), (1, ), (9, )]
K = 1
Salida : [(1 , ), (5, ), (9, )]

Método n.º 1: usar map() + next() + lambda
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, ampliamos la lógica de obtener elementos únicos extraídos usando la función lambda y next(), usando map().

# Python3 code to demonstrate working of 
# Unique Kth index tuples
# Using map() + next() + lambda
  
# initializing list
test_list = [(5, 6, 8), (4, 2, 7), (1, 2, 3), (9, 6, 5)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 2
  
# Unique Kth index tuples
# Using map() + next() + lambda
res = [*map(lambda ele: next(tup for tup in test_list if tup[K - 1] == ele),
      {tup[K - 1] for tup in test_list})]
  
# printing result 
print("The extracted elements : " + str(res)) 
Producción :

The original list is : [(5, 6, 8), (4, 2, 7), (1, 2, 3), (9, 6, 5)]
The extracted elements : [(4, 2, 7), (5, 6, 8)]

Método #2: Usarnext() + groupby() + lambda
La combinación de las funciones anteriores también se puede usar para resolver este problema. En esto, realizamos la tarea de map() arriba usando groupby(), de una manera más compacta.

# Python3 code to demonstrate working of 
# Unique Kth index tuples
# Using next() + groupby() + lambda
from itertools import groupby
  
# initializing list
test_list = [(5, 6, 8), (4, 2, 7), (1, 2, 3), (9, 6, 5)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 2
  
# Unique Kth index tuples
# Using next() + groupby() + lambda
temp = lambda ele : ele[K - 1]
res = [next(val) for _, val in groupby(sorted(test_list, key = temp), key = temp)]
  
# printing result 
print("The extracted elements : " + str(res)) 
Producción :

The original list is : [(5, 6, 8), (4, 2, 7), (1, 2, 3), (9, 6, 5)]
The extracted elements : [(4, 2, 7), (5, 6, 8)]

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 *