Python | Encuentra k palabras más largas en la lista dada

Dada una lista de palabras y un entero positivo K, escriba un programa Python para encontrar k palabras más largas en la lista en orden descendente de longitud.

Ejemplos:

Input : lst  = ['am', 'watermelon', 'girl', 'boy', 'colour'], K = 3
Output : ['watermelon', 'colour', 'girl']

Input : ['see', 'I', 'geek', 'on', 'brain'], K = 4
Output : ['brain', 'geek', 'see', 'on']

 
Método #1: Usar count() de itertools

Primero, clasifique el ‘lst’ en función de la longitud de las palabras y luego en función de una variable de contador, de modo que las palabras que ocurran más tarde tengan mayor prioridad y, por lo tanto, extraiga k variables.

# Python3 program to Find 
# longest K words in a list
from itertools import count
  
def longest_word(lst, K):
    cnt = count()
    return sorted(lst, key = lambda w : (len(w), next(cnt)), 
                                        reverse = True)[:K]
  
# Driver code
lst = ['am', 'watermelon', 'girl', 'boy', 'colour']
K = 3
print(longest_word(lst, K))
Producción:

['watermelon', 'colour', 'girl']

 
Método #2: Usar sorted()

# Python3 program to Find 
# longest K words in a list
  
def longest_word(lst, K):
    idx, words = zip(*sorted(enumerate(lst), 
    key = lambda w: (-len(w[1]), -w[0]))[:K])
    return list(words)
  
# Driver code
lst = ['am', 'watermelon', 'girl', 'boy', 'colour']
K = 3
print(longest_word(lst, K))
Producción:

['watermelon', 'colour', 'girl']

 
Método #3: Usando el montón

# Python3 program to Find 
# longest K words in a list
import heapq
from operator import itemgetter
  
def longest_word(lst, K):
    # constructing heap
    heap = [(0, i, '') for i in range(K)]
    heapq.heapify(heap)
  
    # To maintain top K elements
    for i, word in enumerate(lst):
        item = (len(word), i, word)
        if item > heap[0]:
            heapq.heapreplace(heap, item)
  
    return sorted(list(map(itemgetter(2), heap)),
                            key = len, reverse = True)
  
  
# Driver code
lst = ['am', 'watermelon', 'girl', 'boy', 'colour']
K = 3
print(longest_word(lst, K))
Producción:

['watermelon', 'colour', 'girl']

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 *