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