📌  相关文章
📜  Python |根据子列表中的第二个元素对列表进行排序

📅  最后修改于: 2021-04-23 06:08:28             🧑  作者: Mango

在本文中,我们将学习如何根据主列表中存在的子列表的第二个元素对任何列表进行排序。我们将看到执行此操作的两种方法。我们将学习执行这种排序的三种方法。一种是使用冒泡排序,第二种是使用sort()方法,最后但并非最不重要的是使用sorted()方法。在此程序中,我们按升序对列表进行了排序。
例子:

Input : [['rishav', 10], ['akash', 5], ['ram', 20], ['gaurav', 15]]
Output : [['akash', 5], ['rishav', 10], ['gaurav', 15], ['ram', 20]]

Input : [['452', 10], ['256', 5], ['100', 20], ['135', 15]]
Output : [['256', 5], ['452', 10], ['135', 15], ['100', 20]]

方法1:使用冒泡排序技术
在这里,我们使用了冒泡排序技术来执行排序。我们尝试使用嵌套循环访问子列表的第二个元素。这将执行就地排序方法。时间复杂度类似于冒泡排序,即O(n ^ 2)

# Python code to sort the lists using the second element of sublists
# Inplace way to sort, use of third variable
def Sort(sub_li):
    l = len(sub_li)
    for i in range(0, l):
        for j in range(0, l-i-1):
            if (sub_li[j][1] > sub_li[j + 1][1]):
                tempo = sub_li[j]
                sub_li[j]= sub_li[j + 1]
                sub_li[j + 1]= tempo
    return sub_li
  
# Driver Code
sub_li =[['rishav', 10], ['akash', 5], ['ram', 20], ['gaurav', 15]]
print(Sort(sub_li))

输出:

[['akash', 5], ['rishav', 10], ['gaurav', 15], ['ram', 20]]

方法2:通过使用sort()方法进行排序
通过此方法进行排序时,会更改元组的实际内容,并且与以前的方法一样,将执行就地排序方法。

# Python code to sort the tuples using second element 
# of sublist Inplace way to sort using sort()
def Sort(sub_li):
  
    # reverse = None (Sorts in Ascending order)
    # key is set to sort using second element of 
    # sublist lambda has been used
    sub_li.sort(key = lambda x: x[1])
    return sub_li
  
# Driver Code
sub_li =[['rishav', 10], ['akash', 5], ['ram', 20], ['gaurav', 15]]
print(Sort(sub_li))

输出:

[['akash', 5], ['rishav', 10], ['gaurav', 15], ['ram', 20]]

方法3:通过使用sorted()方法进行排序
Sorted()对列表进行排序,并且始终以排序的方式返回包含元素的列表,而无需修改原始序列。它需要三个参数,其中两个参数是可选的,在这里我们尝试使用所有三个参数:

  1. Iterable:序列(列表,元组,字符串)或集合(字典,集合,frozenset)或任何其他需要排序的迭代器。
  2. Key(可选):可以用作键或排序比较基础的函数。
  3. Reverse(可选):要按升序排序,我们可以忽略该程序中执行的第三个参数。如果设置为true,则可迭代对象将以反向(降序)排序,默认情况下将其设置为false。
# Python code to sort the tuples using second element 
# of sublist Function to sort using sorted()
def Sort(sub_li):
  
    # reverse = None (Sorts in Ascending order)
    # key is set to sort using second element of 
    # sublist lambda has been used
    return(sorted(sub_li, key = lambda x: x[1]))    
  
# Driver Code
sub_li =[['rishav', 10], ['akash', 5], ['ram', 20], ['gaurav', 15]]
print(Sort(sub_li))

输出:

[['akash', 5], ['rishav', 10], ['gaurav', 15], ['ram', 20]]