Python | Agrupar los elementos de la lista en función de la frecuencia

Dada una lista de elementos, escriba un programa Python para agrupar los elementos de la lista y su frecuencia respectiva dentro de una tupla.

Ejemplos:

Input : [1, 3, 4, 4, 1, 5, 3, 1]
Output : [(1, 3), (3, 2), (4, 2), (5, 1)]

Input : ['x', 'a', 'x', 'y', 'a', 'x']
Output : [('x', 3), ('a', 2), ('y', 1)]

Método #1: Comprensión de listas

Podemos usar la comprensión de listas para formar tuplas de cada elemento y el recuento de su ocurrencia y almacenarlo en ‘res’, pero eso contendrá el primer elemento duplicado. Por lo tanto, para eliminar el primer elemento duplicado, usamos OrderedDict(res).items().

# Python3 program to Grouping list 
# elements based on frequency
from collections import OrderedDict 
  
def group_list(lst):
      
    res =  [(el, lst.count(el)) for el in lst]
    return list(OrderedDict(res).items())
      
# Driver code
lst = [1, 3, 4, 4, 1, 5, 3, 1]
print(group_list(lst))
Producción:

[(1, 3), (3, 2), (4, 2), (5, 1)]

 
Método #2: Usarcollections.Counter()

collections.Counter()proporciona dos métodos directos keys()y values()que proporciona los elementos y sus ocurrencias. Por último, comprímalos usando el zip()método de Python.

# Python3 program to Grouping list 
# elements based on frequency
from collections import Counter
  
def group_list(lst):
      
    return list(zip(Counter(lst).keys(), Counter(lst).values()))
      
# Driver code
lst = [1, 3, 4, 4, 1, 5, 3, 1]
print(group_list(lst))
Producción:

[(1, 3), (3, 2), (4, 2), (5, 1)]

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal 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 *