Python | Elementos de lista de tupla de grupo binario

A veces, mientras trabajamos con tuplas, podemos tener problemas para agruparlas, ya sea por género o por alguna categoría binaria en particular. Esto puede tener aplicaciones en muchos dominios. Analicemos ciertas formas en que esto se puede realizar.

Método #1: Usar generador + bucle +zip()
El método de fuerza bruta para realizar esta tarea, en este, realizamos la agrupación combinada con la ayuda de zip(), y la lógica de iteración es manejada por generador y bucle.

# Python3 code to demonstrate working of
# Binary Group Tuple list elements
# using generator + loop + zip()
  
# helper function to perform task 
def bin_group(test_list):
     for tup1, tup2 in zip(test_list[0::2], test_list[1::2]):
             yield (tup1[0], tup1[1], tup2[1])
  
# initialize list 
test_list = [(1, 56, 'M'), (1, 14, 'F'), (2, 43, 'F'), (2, 10, 'M')]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Binary Group Tuple list elements
# using generator + loop + zip()
res = list(bin_group(test_list))
  
# printing result
print("The list after binary grouping : " + str(res))
Producción :

The original list : [(1, 56, 'M'), (1, 14, 'F'), (2, 43, 'F'), (2, 10, 'M')]
The list after binary grouping : [(1, 56, 14), (2, 43, 10)]

Método n.° 2: Usar defaultdict() + comprensión de lista +sorted() + items()
Combinación de las funciones anteriores para realizar esta tarea. En esto, convertimos la lista en un diccionario y luego realizamos una agrupación basada en claves y la reorganizamos de nuevo a la lista de tuplas.

# Python3 code to demonstrate working of
# Binary Group Tuple list elements
# using defaultdict() + list comprehension + sorted() + items()
from collections import defaultdict
  
# initialize list 
test_list = [(1, 56, 'M'), (1, 14, 'F'), (2, 43, 'F'), (2, 10, 'M')]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Binary Group Tuple list elements
# using defaultdict() + list comprehension + sorted() + items()
temp = defaultdict(list)
for ele in test_list:
    temp[ele[0]].append(ele[1])
res = sorted((key, ) + tuple(val) for key, val in temp.items())
  
# printing result
print("The list after binary grouping : " + str(res))
Producción :

The original list : [(1, 56, 'M'), (1, 14, 'F'), (2, 43, 'F'), (2, 10, 'M')]
The list after binary grouping : [(1, 56, 14), (2, 43, 10)]

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 *