📌  相关文章
📜  Python程序按第二个项目对元组列表进行排序

📅  最后修改于: 2022-05-13 01:55:01.960000             🧑  作者: Mango

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)]