Python | Sort lists in tuple
Last Updated :
17 May, 2023
Sometimes, while working with Python tuples, we can have a problem in which we need to sort the tuples which constitutes of lists and we need to sort each of them. Let's discuss certain ways in which this task can be performed.
Method #1 : Using tuple() + sorted() + generator expression This task can be performed using the combination of above functions. In this, we iterate through each list using generator expression and perform the sort operation using sorted().
Python3
# Python3 code to demonstrate working of
# Sort lists in tuple
# Using tuple() + sorted() + generator expression
# Initializing tuple
test_tup = ([7, 5, 4], [8, 2, 4], [0, 7, 5])
# printing original tuple
print("The original tuple is : " + str(test_tup))
# Sort lists in tuple
# Using tuple() + sorted() + generator expression
res = tuple((sorted(sub) for sub in test_tup))
# printing result
print("The tuple after sorting lists : " + str(res))
Output : The original tuple is : ([7, 5, 4], [8, 2, 4], [0, 7, 5])
The tuple after sorting lists : ([4, 5, 7], [2, 4, 8], [0, 5, 7])
Method #2 : Using map() + sorted() This method performs the similar task as the above method, but it uses map() to extend the logic to each element of tuple, the task performed by list comprehension in above method.
Python3
# Python3 code to demonstrate working of
# Sort lists in tuple
# Using map() + sorted()
# Initializing tuple
test_tup = ([7, 5, 4], [8, 2, 4], [0, 7, 5])
# printing original tuple
print("The original tuple is : " + str(test_tup))
# Sort lists in tuple
# Using map() + sorted()
res = tuple(map(sorted, test_tup))
# printing result
print("The tuple after sorting lists : " + str(res))
Output : The original tuple is : ([7, 5, 4], [8, 2, 4], [0, 7, 5])
The tuple after sorting lists : ([4, 5, 7], [2, 4, 8], [0, 5, 7])
method#3: for+sorted
Approach
this approach is, sorts the lists in the given tuple using a for loop and the sorted() function.
Algorithm
1. Create an empty tuple sorted_lists to store the sorted lists
2. Loop through each list in the original tuple using a for loop
3. Use the sorted() function to sort each list and store it in a new variable sorted_list
4. Add the sorted list to the sorted_lists tuple using the += operator
5. Print the sorted tuple
Python3
original_tuple = ([7, 5, 4], [8, 2, 4], [0, 7, 5])
sorted_lists = ()
for lst in original_tuple:
sorted_list = sorted(lst)
sorted_lists += (sorted_list,)
print(sorted_lists)
Output([4, 5, 7], [2, 4, 8], [0, 5, 7])
Time Complexity: The time complexity of the above program is O(NMlogM), where N is the number of lists in the tuple and M is the length of each list. This is because we loop through each list once and sorting each list takes O(M*logM) time.
Space Complexity: The space complexity of the above program is O(N*M), where N is the number of lists in the tuple and M is the length of each list. This is because we create a new tuple to store the sorted lists and each list has M elements.
Approach#4: Using lambda
In this approach, we are using map() function with an anonymous lambda function to apply the sorted() function to each list in the input tuple. The sorted() function sorts the elements of each list in ascending order, and the map() function applies this operation to all the lists in the input tuple. Finally, we convert the resulting iterable to a tuple.
Algorithm
1. Define the input tuple containing multiple lists.
2. Use the map() function with an anonymous lambda function to apply the sorted() function to each list in the input tuple.
3. Convert the resulting iterable to a tuple.
4. Print the resulting tuple.
Python3
tup = ([7, 5, 4], [8, 2, 4], [0, 7, 5])
result_tup = tuple(map(lambda lst: sorted(lst), tup))
print(result_tup)
Output([4, 5, 7], [2, 4, 8], [0, 5, 7])
Time Complexity: O(mn*log(n)). The time complexity of the sorted() function is O(nlog(n)), where n is the length of the input list. In this code, we are using the sorted() function inside a lambda function that is passed to the map() function. The map() function applies this operation to all the lists in the input tuple, so the time complexity of this operation becomes O(mnlog(n)), where m is the number of lists in the input tuple.
Auxiliary Space: O(m*n), where m is the number of lists in the input tuple, and n is the length of each list. We are creating a new list for each input list, so the size of the resulting tuple is the same as the size of the input tuple. Therefore, the space complexity is linear with respect to the input size.
Similar Reads
Sort Tuple of Lists in Python The task of sorting a tuple of lists involves iterating through each list inside the tuple and sorting its elements. Since tuples are immutable, we cannot modify them directly, so we must create a new tuple containing the sorted lists. For example, given a tuple of lists a = ([2, 1, 5], [1, 5, 7], [
3 min read
Sort a list in python Sorting is a fundamental operation in programming, allowing you to arrange data in a specific order. Here is a code snippet to give you an idea about sorting.Python# Initializing a list a = [5, 1, 5, 6] # Sort modifies the given list a.sort() print(a) b = [5, 2, 9, 6] # Sorted does not modify the gi
5 min read
Custom Sorting in List of Tuples - Python The task of custom sorting in a list of tuples often involves sorting based on multiple criteria. A common example is sorting by the first element in descending order and the second element in ascending order. For example, given a = [(7, 8), (5, 6), (7, 5), (10, 4), (10, 1)], sorting the tuples by t
3 min read
Python - Sort Tuples by Total digits Given a Tuple List, perform sort on basis of total digits in tuple. Examples: Input : test_list = [(3, 4, 6, 723), (1, 2), (134, 234, 34)] Output : [(1, 2), (3, 4, 6, 723), (134, 234, 34)] Explanation : 2 < 6 < 8, sorted by increasing total digits. Input : test_list = [(1, 2), (134, 234, 34)]
6 min read
Python - Multiple Column Sort in Tuples Sometimes, while working with records, we can have a problem in which we need to perform sort operation on one of the columns, and on other column, if equal elements, opposite sort. This kind of problem can occur as application in many domains such as web development. Lets discuss certain ways in wh
4 min read
Sort a List of Tuples by Second Item - Python The task of sorting a list of tuples by the second item is common when working with structured data in Python. Tuples are used to store ordered collections and sometimes, we need to sort them based on a specific element, such as the second item. For example, given the list [(1, 3), (4, 1), (2, 2)],
2 min read