Python | Encuentre los K elementos más frecuentes de una lista de tuplas

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)
Producción:

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)
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *