繁体   English   中英

对 python 中的嵌套列表数据进行排序

[英]sort nested list data in python

我正在尝试在 python(3.8.5) 中对嵌套列表进行排序。 我有一个像 -

[['1', 'A', 2, 5, 45, 10],
 ['2', 'B', 8, 15, 65, 20],
 ['3', 'C', 32, 35, 25, 140],
 ['4', 'D', 82, 305, 75, 90],
 ['5', 'E', 39, 43, 89, 55],
 ]

我想这样排序-

[['4', 'D', 82, 305, 75, 90],
 ['5', 'E', 39, 43, 89, 55],
 ['3', 'C', 32, 35, 25, 140],
 ['2', 'B', 8, 15, 65, 20],
 ['1', 'A', 2, 5, 45, 10],
 ]

它已按索引为 2 的列排序。根据索引,它更像这样。 从索引 2 开始,依此类推。 我的意思是它已按列排序。 我可以这样做吗?

如果你想对这样的列表进行排序,只需给sorted一个键:

sorted_list = sorted([['1', 'A', 2, 5, 45, 10],
     ['2', 'B', 8, 15, 65, 20],
     ['3', 'C', 32, 35, 25, 140],
     ['4', 'D', 82, 305, 75, 90],
     ['5', 'E', 39, 43, 89, 55]], key=lambda lst: lst[2], lst[1], ....)

对于数值,您甚至可以包含一个负号 ( -lst[1] ) 来反转单个列的顺序

尝试这个:

lst = [['1', 'A', 2, 5, 45, 10],
 ['2', 'B', 8, 15, 65, 20],
 ['3', 'C', 32, 35, 25, 140],
 ['4', 'D', 82, 305, 75, 90],
 ['5', 'E', 39, 43, 89, 55],
 ]

lst = sorted(lst, key=lambda x: x[2], reverse=True)
print(lst)

Python 代码使用第二个元素对元组进行排序

子列表的 Inplace 方式使用 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[2],reverse=True) 
return sub_li 

# Driver Code 
sub_li =[['1', 'A', 2, 5, 45, 10],
 ['2', 'B', 8, 15, 65, 20],
 ['3', 'C', 32, 35, 25, 140],
 ['4', 'D', 82, 305, 75, 90],
 ['5', 'E', 39, 43, 89, 55],
 ]
 print(Sort(sub_li)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM