w3resource

Python: Get the k most frequent elements from a given non-empty list of words using Heap queue algorithm

Python heap queue algorithm: Exercise-14 with Solution

Write a Python program to get the k most frequent elements from a given non-empty list of words using Heap queue algorithm.

Note:
Range of k, 1 ≤ k ≤ number of unique elements and input words contain only lowercase letters.

Sample Solution:

Python Code:

import heapq
from collections import Counter
class Solution:
    def top_K_Frequent(self, words, k):
        """
        :type words: List[str]
        :type k: int
        :return type: List[str]
        """
        ctr = Counter(words)
        heap = [(-ctr[word], word) for word in ctr]
        heapq.heapify(heap)
        return [heapq.heappop(heap)[1] for _ in range(k)]

if __name__ =='__main__':
    words = ["a", "abc", "abcdef", "a", "abcd", "abcd", "abc", "abcdefg"]
    k = 3
    s = Solution()
    print("3 most frequent elements:")
    print(s.top_K_Frequent(words, k))

Sample Output:

3 most frequent elements:
['a', 'abc', 'abcd']

Flowchart:

Python heap queue algorithm: Get the k most frequent elements from a given non-empty list of words using Heap queue algorithm.

Visualize Python code execution:

The following tool visualize what the computer is doing step-by-step as it executes the said program:


Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to find the nth super ugly number from a given prime list of size k using Heap queue algorithm.
Next: Write a Python program to check if the letters of a given string can be rearranged so that two characters that are adjacent to each other are different using Heap queue algorithm.

What is the difficulty level of this exercise?

Test your Python skills with w3resource's quiz


Python: Tips of the Day

Creates a dictionary with the same keys as the provided dictionary and values generated by running the provided function for each value:

Example:

def tips_map_values(obj, fn):
  ret = {}
  for key in obj.keys():
    ret[key] = fn(obj[key])
  return ret
users = {
  'Owen': { 'user': 'Owen', 'age': 29 },
  'Eddie': { 'user': 'Eddie', 'age': 15 }
}

print(tips_map_values(users, lambda u : u['age'])) # {'Owen': 29, 'Eddie': 15}

Output:

{'Owen': 29, 'Eddie': 15}