【问题标题】:sort nested list data in python在python中对嵌套列表数据进行排序
【发布时间】:2021-01-12 06:44:05
【问题描述】:

我正在尝试在 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 开始,依此类推。 我的意思是它已按列排序。 我可以这样做吗?

【问题讨论】:

  • 请提供更多澄清细节。列索引 2 等等……那是什么?索引 2,然后是哪些列?
  • 你为解决这个问题做了哪些努力?

标签: python list sorting nested


【解决方案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)

【讨论】:

    【解决方案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]) 来反转单个列的顺序

    【讨论】:

    • @dimay 不一定。我对OP想要的顺序感到困惑。但我已经给出了使用否定来反转每列的选项
    【解决方案3】:

    使用第二个元素对元组进行排序的 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)) 
    

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2019-02-24
      • 2019-05-05
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多