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))
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))
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