w3resource

Python: Get the n expensive and cheap price items from a given dataset using Heap queue algorithm


Write a Python program to get the most expensive and least expensive items from a given dataset using the heap queue algorithm.

Sample Solution:

Python Code:

import heapq
from pprint import pprint
items = [
    {'name': 'Item-1', 'price': 101.1},
    {'name': 'Item-2', 'price': 555.22},
    {'name': 'Item-3', 'price': 45.09},
    {'name': 'Item-4', 'price': 22.75},
    {'name': 'Item-5', 'price': 16.30},
    {'name': 'Item-6', 'price': 110.65}
]

cheap = heapq.nsmallest(3, items, key=lambda s: s['price'])
expensive = heapq.nlargest(3, items, key=lambda s: s['price'])
print("Original datasets:")
pprint(items)
print("\nFirst 3 expensive items:")
pprint(expensive)
print("\nFirst 3 cheap items:")
pprint(cheap)

Sample Output:

Original datasets:
[{'name': 'Item-1', 'price': 101.1},
 {'name': 'Item-2', 'price': 555.22},
 {'name': 'Item-3', 'price': 45.09},
 {'name': 'Item-4', 'price': 22.75},
 {'name': 'Item-5', 'price': 16.3},
 {'name': 'Item-6', 'price': 110.65}]

First 3 expensive items:
[{'name': 'Item-2', 'price': 555.22},
 {'name': 'Item-6', 'price': 110.65},
 {'name': 'Item-1', 'price': 101.1}]

First 3 cheap items:
[{'name': 'Item-5', 'price': 16.3},
 {'name': 'Item-4', 'price': 22.75},
 {'name': 'Item-3', 'price': 45.09}]

Flowchart:

Python heap queue algorithm: Get the n expensive and cheap price items from a given dataset using Heap queue algorithm.

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 top k integers that occur the most frequently from a given lists of sorted and distinct integers using Heap queue algorithm.
Next: Write a Python program to merge multiple sorted inputs into a single sorted iterator (over the sorted values) using Heap queue algorithm.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.