Nsmallest function of heapq module In Python

Overview:

  • The nsmallest() method of the Python module heapify returns the specified number of smallest elements from an iterable in sorted order.
  • A key function can be passed as an argument to the nsmallest() function. The key function accepts one parameter and returns the comparison key to be used in the sorting process.
  • Using a key function helps sorting records based on a specific field where elements are actually objects or records with several attributes or fields.

Example:

# Example Python program that uses heapq.nsmallest()

# function to find the n smallest elements from an iterable

import heapq

 

select = 4

elements = (2, 9, 17, 11, 6, 16, 8)

smallests = heapq.nsmallest(select, elements)

print(smallests)

 

Output:

[2, 6, 8, 9]

 

Example – Finding ‘n’ smallest elements using the key function:

# Example Python program that uses heapq.nsmallest()

# along with a function that produces comparison keys

import heapq

 

# Key function returning the total scores

def total(result):

    return result.math + result.physics + result.physics + result.physics

 

# Class defining Objects representing records of exam results

class ExamResult:

    def __init__(self, id, math, physics, chemistry, biology):

        self.id = id

        self.math = math

        self.physics = physics

        self.chemistry = chemistry

        self.biology = biology

       

    def __str__(self):       

        return "%d"%self.id

 

# ExamResult objects   

r1 = ExamResult(11, 55, 60, 75, 65)

r2 = ExamResult(12,95, 80, 76, 78)

r3 = ExamResult(13, 50, 65, 60, 85)

r4 = ExamResult(14, 55, 57, 50, 75)

 

# Find the lowest total scores

lowest = heapq.nsmallest(2, [r1, r2, r3, r4], key=total)

for result in lowest:

    print(result)

 

Output:

14

11

 


Copyright 2024 © pythontic.com