Python程序按第二个项目对元组列表进行排序
给定一个元组列表,编写一个Python程序按每个元组的第二项对元组进行排序。
例子:
Input : [('for', 24), ('Geeks', 8), ('Geeks', 30)]
Output : [('Geeks', 8), ('for', 24), ('Geeks', 30)]
Input : [('452', 10), ('256', 5), ('100', 20), ('135', 15)]
Output : [('256', 5), ('452', 10), ('135', 15), ('100', 20)]
方法#1:使用冒泡排序
使用冒泡排序技术我们可以执行排序。请注意,每个元组都是给定列表中的一个元素。使用嵌套循环访问每个元组的第二个元素。这将执行就地排序方法。时间复杂度类似于冒泡排序,即 O(n^2)。
# Python program to sort a list of tuples by the second Item
# Function to sort the list of tuples by its second item
def Sort_Tuple(tup):
# getting length of list of tuples
lst = len(tup)
for i in range(0, lst):
for j in range(0, lst-i-1):
if (tup[j][1] > tup[j + 1][1]):
temp = tup[j]
tup[j]= tup[j + 1]
tup[j + 1]= temp
return tup
# Driver Code
tup =[('for', 24), ('is', 10), ('Geeks', 28),
('Geeksforgeeks', 5), ('portal', 20), ('a', 15)]
print(Sort_Tuple(tup))
输出:
[('Geeksforgeeks', 5), ('is', 10), ('a', 15), ('portal', 20), ('for', 24), ('Geeks', 28)]
方法 #2:使用 sort() 方法
通过这种方法进行排序时,元组的实际内容会发生变化,并且就像之前的方法一样,执行排序的就地方法。
# Python program to sort a list of
# tuples by the second Item using sort()
# Function to sort hte list by second item of tuple
def Sort_Tuple(tup):
# reverse = None (Sorts in Ascending order)
# key is set to sort using second element of
# sublist lambda has been used
tup.sort(key = lambda x: x[1])
return tup
# Driver Code
tup = [('rishav', 10), ('akash', 5), ('ram', 20), ('gaurav', 15)]
# printing the sorted list of tuples
print(Sort_Tuple(tup))
输出:
[('akash', 5), ('rishav', 10), ('gaurav', 15), ('ram', 20)]
方法 #3:使用 sorted() 方法
Sorted() 方法对列表进行排序,并始终以排序方式返回包含元素的列表,而不修改原始序列。它需要三个参数,其中两个是可选的,这里我们尝试使用所有三个参数:
可迭代:序列(列表、元组、字符串)或集合(字典、集合、冻结集)或任何其他需要排序的迭代器。
Key(optional) :一个函数,可以作为一个键或排序比较的基础。
Reverse(optional) :要按升序排序,我们可以忽略第三个参数,我们在这个程序中做了。如果设置为 true,则 iterable 将以反向(降序)顺序排序,默认情况下设置为 false。
# Python program to sort a list of
# tuples by the second Item using sorted()
# Function to sort the list by second item of tuple
def Sort_Tuple(tup):
# reverse = None (Sorts in Ascending order)
# key is set to sort using second element of
# sublist lambda has been used
return(sorted(tup, key = lambda x: x[1]))
# Driver Code
tup = [('rishav', 10), ('akash', 5), ('ram', 20), ('gaurav', 15)]
# printing the sorted list of tuples
print(Sort_Tuple(tup))
输出:
[('akash', 5), ('rishav', 10), ('gaurav', 15), ('ram', 20)]