Python - Find minimum k records from tuple list
Last Updated :
06 Apr, 2023
Sometimes, while working with data, we can have a problem in which we have records and we require to find the lowest K scores from it. This kind of application is popular in web development domain. Let’s discuss certain ways in which this problem can be solved.
Method #1 : Using sorted() + lambda The combination of above functionality can be used to perform this particular task. In this, we just employ sorted function, and print the lowest K elements using list slicing.
Python3
# Python3 code to demonstrate working of
# Minimum K records
# Using sorted() + lambda
# Initializing list
test_list = [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
# Initializing K
K = 2
# printing original list
print("The original list is : " + str(test_list))
# Minimum K records
# Using sorted() + lambda
res = sorted(test_list, key = lambda x: x[1])[:K]
# printing result
print("The lowest K records are : " + str(res))
OutputThe original list is : [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
The lowest K records are : [('Akash', 2), ('Akshat', 4)]
Time complexity: O(n log n), where n is the length of the input list.
Auxiliary space: O(1). The space used by the algorithm is constant because the input list and K are the only variables that are being stored, and the result list is being constructed in place.
Method #2 : Using sorted() + itemgetter() The combination of above functions can also be used to perform this particular task. In this, the task performed by lambda function is performed by itemgetter() is used to get the index in tuple which has to be included in calculations.
Python3
# Python3 code to demonstrate working of
# Minimum K records
# Using sorted() + itemgetter()
from operator import itemgetter
# Initializing list
test_list = [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
# Initializing K
K = 2
# printing original list
print("The original list is : " + str(test_list))
# Minimum K records
# Using sorted() + itemgetter()
res = sorted(test_list, key = itemgetter(1))[:K]
# printing result
print("The lowest K records are : " + str(res))
OutputThe original list is : [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
The lowest K records are : [('Akash', 2), ('Akshat', 4)]
Time complexity: O(n log n), where n is the length of the test_list.
Auxiliary space: O(k), where k is the value of K, since we are creating a new list of length K to store the minimum K records.
Method #3 : Using heapq.nsmallest()
This method uses the nsmallest() function from the heapq module which returns the k smallest elements from an iterable. This method is more efficient than sorting the entire list and slicing the first k elements as it only considers the k smallest elements and doesn't sort the entire list.
Python3
# Python3 code to demonstrate working of
# Minimum K records
# Using heapq.nsmallest()
import heapq
# Initializing list
test_list = [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
# Initializing K
K = 2
# printing original list
print("The original list is : " + str(test_list))
# Minimum K records
# Using heapq.nsmallest()
res = heapq.nsmallest(K, test_list, key = lambda x: x[1])
# printing result
print("The lowest K records are : " + str(res))
#This code is contributed by Edula Vinay Kumar Reddy
OutputThe original list is : [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
The lowest K records are : [('Akash', 2), ('Akshat', 4)]
Time complexity of using heapq.nsmallest() is O(nlogk) and the Auxiliary space is O(k).
Method #4 : Using a for loop and conditional statements
This approach uses two nested for loops to find the minimum value in the list, and removes it from the list after it has been added to the result list. The outer for loop runs K times to find K minimum values. This approach may not be as efficient as the other methods for large lists.
Python3
# Python3 code to demonstrate working of
# Minimum K records
# Using a for loop and conditional statements
# Initializing list
test_list = [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
# Initializing K
K = 2
# printing original list
print("The original list is : " + str(test_list))
# Minimum K records
res = []
for i in range(K):
min_val = test_list[0]
for val in test_list:
if val[1] < min_val[1]:
min_val = val
res.append(min_val)
test_list.remove(min_val)
# printing result
print("The lowest K records are : " + str(res))
OutputThe original list is : [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
The lowest K records are : [('Akash', 2), ('Akshat', 4)]
The time complexity of the given code is O(K*N^2), where N is the length of the input list.
The space complexity is O(K), as we are storing the minimum K values in the res list.
Method #5: Using heapq.nlargest()
This method can be used to find the largest K elements in the list. We can negate the second element in the tuple and use heapq.nlargest() to find the K largest tuples. Finally, we can negate the second element back to obtain the K smallest tuples.
step-by-step approach:
- Negate the second element in each tuple using a lambda function.
- Use heapq.nlargest() to find the K largest tuples.
- Negate the second element in each tuple back to obtain the K smallest tuples.
Python3
import heapq
# Initializing list
test_list = [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
# Initializing K
K = 2
# printing original list
print("The original list is : " + str(test_list))
# Minimum K records using heapq.nlargest()
res = heapq.nlargest(K, test_list, key=lambda x: -x[1])
res = [(name, -score) for name, score in res]
# printing result
print("The lowest K records are : " + str(res))
OutputThe original list is : [('Manjeet', 10), ('Akshat', 4), ('Akash', 2), ('Nikhil', 8)]
The lowest K records are : [('Akash', -2), ('Akshat', -4)]
Time complexity: O(n log K), where n is the length of the list.
Auxiliary space: O(K), since we are storing K elements in the heap.
Similar Reads
Python Tutorial - Learn Python Programming Language Python is one of the most popular programming languages. Itâs simple to use, packed with features and supported by a wide range of libraries and frameworks. Its clean syntax makes it beginner-friendly. It'sA high-level language, used in web development, data science, automation, AI and more.Known fo
10 min read
Python Interview Questions and Answers Python is the most used language in top companies such as Intel, IBM, NASA, Pixar, Netflix, Facebook, JP Morgan Chase, Spotify and many more because of its simplicity and powerful libraries. To crack their Online Assessment and Interview Rounds as a Python developer, we need to master important Pyth
15+ min read
Python OOPs Concepts Object Oriented Programming is a fundamental concept in Python, empowering developers to build modular, maintainable, and scalable applications. By understanding the core OOP principles (classes, objects, inheritance, encapsulation, polymorphism, and abstraction), programmers can leverage the full p
11 min read
Python Projects - Beginner to Advanced Python is one of the most popular programming languages due to its simplicity, versatility, and supportive community. Whether youâre a beginner eager to learn the basics or an experienced programmer looking to challenge your skills, there are countless Python projects to help you grow.Hereâs a list
10 min read
Python Exercise with Practice Questions and Solutions Python Exercise for Beginner: Practice makes perfect in everything, and this is especially true when learning Python. If you're a beginner, regularly practicing Python exercises will build your confidence and sharpen your skills. To help you improve, try these Python exercises with solutions to test
9 min read
Python Programs Practice with Python program examples is always a good choice to scale up your logical understanding and programming skills and this article will provide you with the best sets of Python code examples.The below Python section contains a wide collection of Python programming examples. These Python co
11 min read
Python Introduction Python was created by Guido van Rossum in 1991 and further developed by the Python Software Foundation. It was designed with focus on code readability and its syntax allows us to express concepts in fewer lines of code.Key Features of PythonPythonâs simple and readable syntax makes it beginner-frien
3 min read
Python Data Types Python Data types are the classification or categorization of data items. It represents the kind of value that tells what operations can be performed on a particular data. Since everything is an object in Python programming, Python data types are classes and variables are instances (objects) of thes
9 min read
Input and Output in Python Understanding input and output operations is fundamental to Python programming. With the print() function, we can display output in various formats, while the input() function enables interaction with users by gathering input during program execution. Taking input in PythonPython input() function is
8 min read
Enumerate() in Python enumerate() function adds a counter to each item in a list or other iterable. It turns the iterable into something we can loop through, where each item comes with its number (starting from 0 by default). We can also turn it into a list of (number, item) pairs using list().Let's look at a simple exam
3 min read