Open In App

Python | Ways to sort a zipped list by values

Zipped lists are those lists where several lists are mapped together to form one list which can be used as one entity altogether. In Python Zip() function is used to map different lists. Let’s discuss a few methods to demonstrate the problem. 
Method #1: Using lambda and sort 




# Python code to demonstrate
# sort zipped list by values
# using lambda and sorted
 
# Declaring initial lists
list1 = ['geeks', 'for', 'Geeks']
list2 = [3, 2, 1]
zipped = zip(list1, list2)
 
# Converting to list
zipped = list(zipped)
 
# Printing zipped list
print("Initial zipped list - ", str(zipped))
 
# Using sorted and lambda
res = sorted(zipped, key = lambda x: x[1])
     
# printing result
print("final list - ", str(res))

Output:

Initial zipped list -  [('geeks', 3), ('for', 2), ('Geeks', 1)]
final list -  [('Geeks', 1), ('for', 2), ('geeks', 3)]

Time Complexity: O(n*n), where n is the length of the list test_list 
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list 

  Method #2: Using operator and sort 






# Python code to demonstrate
# sort zipped list by values
# using operator and sorted
 
import operator
# Declaring initial lists
list1 = ['akshat', 'Manjeet', 'nikhil']
list2 = [3, 2, 1]
zipped = zip(list1, list2)
 
# Converting to list
zipped = list(zipped)
 
# Printing zipped list
print("Initial zipped list - ", str(zipped))
 
# Using sorted and operator
res = sorted(zipped, key = operator.itemgetter(1))
     
# printing result
print("final list - ", str(res))

Output:
Initial zipped list -  [('akshat', 3), ('Manjeet', 2), ('nikhil', 1)]
final list -  [('nikhil', 1), ('Manjeet', 2), ('akshat', 3)]

Method #3: Using the zip and sorted functions with the key argument:

Approach:




list1 = [1, 3, 5, 7]
list2 = [2, 4, 6, 8]
 
zipped = list(zip(list1, list2))
sorted_zipped = sorted(zipped, key=lambda x: x[1])
sorted_list1, sorted_list2 = zip(*sorted_zipped)
print(list(sorted_zipped))
print(list(sorted_list1))
print(list(sorted_list2))

Output
[(1, 2), (3, 4), (5, 6), (7, 8)]
[1, 3, 5, 7]
[2, 4, 6, 8]

Time complexity: O(n log n)
Space complexity: O(n)


Article Tags :