Dada una lista de tuplas con word como primer elemento y su frecuencia como segundo elemento, la tarea es encontrar el k elemento más frecuente.
A continuación se presentan algunas formas de lograr la tarea anterior.
Método #1: Usardefaultdict
# Python code to find top 'k' frequent element # Importing import collections from operator import itemgetter from itertools import chain # Input list initialization Input =[[('Name', 151)], [('ACe', 400)], [('TURN', 210)], [('RED', 1113)], [('YELLOW', 1)]] # K initialization K = 3 # Using defaultdict to find top 'k' frequent element dict_ = collections.defaultdict(list) new_list = list(chain.from_iterable(Input)) for elem in new_list: dict_[elem[0]].append(elem[1]) res = {k: sum(v) for k, v in dict_.items()} # Using sorted Output = sorted(res.items(), key = itemgetter(1), reverse = True)[0:K] # printing output print("Initial List of tuple is", Input) print("\nTop 'K' elements are", Output)
La lista inicial de tupla es [[(‘Nombre’, 151)], [(‘ACe’, 400)], [(‘TURN’, 210)], [(‘RED’, 1113)], [(‘YELLOW ‘, 1)]]
Los elementos ‘K’ principales son [(‘RED’, 1113), (‘ACe’, 400), (‘TURN’, 210)]
Método #2: Usar itertools
ysorted
# Python code to find top 'k' frequent element from operator import itemgetter from itertools import chain # Input list initialization Input =[[('Name', 151)], [('ACe', 400)], [('TURN', 210)], [('RED', 1113)], [('YELLOW', 1)]] # k initialization K = 3 # Finding top 'k' frequent element # without using collection Output = sorted(list(chain.from_iterable(Input)), key = itemgetter(1), reverse = True)[0:K] # Printing Output print("Initial List of tuple is", Input) print("\nTop 'K' elements are", Output)
La lista inicial de tupla es [[(‘Nombre’, 151)], [(‘ACe’, 400)], [(‘TURN’, 210)], [(‘RED’, 1113)], [(‘YELLOW ‘, 1)]]
Los elementos ‘K’ principales son [(‘RED’, 1113), (‘ACe’, 400), (‘TURN’, 210)]
Publicación traducida automáticamente
Artículo escrito por everythingispossible y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA