Python: agrupa los primeros elementos por los segundos elementos en la lista Tuple

Dada la Lista de tuplas, agrupe los primeros elementos sobre la base de los segundos elementos.

Entrada : test_list = [(6, 5), (2, 7), (2, 5), (8, 7), (3, 7)]
Salida : {5: [6, 2], 7: [2 , 8, 3]}
Explicación : 5 aparece junto con 6 y 2 en la lista de tuplas, por lo que se agrupa.

Entrada : test_list = [(6, 5), (2, 7), (2, 5), (8, 7)]
Salida : {5: [6, 2], 7: [2, 8]}
Explicación : 5 aparece junto con 6 y 2 en la lista de tuplas, por lo que se agrupa.

Método n. ° 1: usar loop + groupby() + sorted() + lista de comprensión + lambda

En esto, los elementos se ordenan para agruparlos, función proporcionada por lambda, luego solo los primeros elementos se extraen mediante la comprensión de listas fuera del resultado. Y la formación final del diccionario usando loop.

Python3

# Python3 code to demonstrate working of 
# Group first elements by second elements in Tuple list
# Using loop + groupby() + sorted() + list comprehension + lambda
from itertools import groupby
  
# initializing list
test_list = [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)]
  
# printing original list
print("The original list is : " + str(test_list))
  
res = dict()
  
# forming equal groups
for key, val in groupby(sorted(test_list, key = lambda ele: ele[1]), key = lambda ele: ele[1]):
    res[key] = [ele[0] for ele in val] 
  
# printing results
print("Grouped Dictionary : " + str(res))
Producción

The original list is : [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)]
Grouped Dictionary : {5: [6, 2], 7: [2, 8, 3], 8: [9]}

Método #2: Usar la comprensión del diccionario 

Este es un método similar al anterior, solo una abreviatura de una sola línea manejada usando la comprensión del diccionario.

Python3

# Python3 code to demonstrate working of 
# Group first elements by second elements in Tuple list
# Using dictionary comprehension 
from itertools import groupby
  
# initializing list
test_list = [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# shorthand to solve problem
res = {key : [v[0] for v in val] for key, val in groupby(sorted(test_list, key = lambda ele: ele[1]), key = lambda ele: ele[1])}
  
# printing results
print("Grouped Dictionary : " + str(res))
Producción

The original list is : [(6, 5), (2, 7), (2, 5), (8, 7), (9, 8), (3, 7)]
Grouped Dictionary : {5: [6, 2], 7: [2, 8, 3], 8: [9]}

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 *