Python: cuente un par similar en la lista dual

A veces, mientras trabajamos con datos, podemos tener un problema en el que recibimos el par de elementos duales y tenemos la intención de encontrar pares de elementos similares y su frecuencia. Este tipo de datos suele ser útil en los dominios de datos. Analicemos ciertas formas en que se puede realizar esta tarea.
Método n.º 1: usar Counter() + map() + sorted() + items() 
La combinación de las funciones anteriores se puede usar para lograr esta tarea en particular. En esto, primero encontramos la frecuencia usando Counter y luego la vinculamos en una tupla usando map(). sorted() realiza la tarea de ordenar antes de usar el método anterior.
 

Python3

# Python3 code to demonstrate
# Count Similar pair in dual list
# using Counter() + map() + sorted() + items()
from collections import Counter
 
# initializing list
test_list = [[1, 2], [2, 1], [3, 4], [4, 3], [5, 4]]
 
# printing original list
print ("The original list is : " + str(test_list))
 
# Count Similar pair in dual list
# using Counter() + map() + sorted() + items()
temp = [sorted(ele) for ele in test_list]
res = [(i, j, k) for (i, j), k in Counter(map(tuple, temp)).items()]
 
# printing result
print ("The dual list similarity counts : " + str(res))
Producción : 

The original list is : [[1, 2], [2, 1], [3, 4], [4, 3], [5, 4]]
The dual list similarity counts : [(1, 2, 2), (4, 5, 1), (3, 4, 2)]

 

 
Método #2: Usando sum() + comprensión de listas + groupby() + sorted() 
En este método, la tarea de contar se realiza usando sum() y la tarea de obtener grupos se realiza usando groupby().
 

Python3

# Python3 code to demonstrate
# Count Similar pair in dual list
# using sum() + list comprehension + groupby() + sorted()
from itertools import groupby
 
# initializing list
test_list = [[1, 2], [2, 1], [3, 4], [4, 3], [5, 4]]
 
# printing original list
print ("The original list is : " + str(test_list))
 
# Count Similar pair in dual list
# using sum() + list comprehension + groupby() + sorted()
res = [(*temp, sum(1 for idx in elements))
      for temp, elements in groupby(test_list, key = lambda j : sorted(j))]
 
# printing result
print ("The dual list similarity counts : " + str(res))
Producción : 

The original list is : [[1, 2], [2, 1], [3, 4], [4, 3], [5, 4]]
The dual list similarity counts : [(1, 2, 2), (4, 5, 1), (3, 4, 2)]

 

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 *