【问题标题】:Quicksort a list of list by column按列快速排序列表
【发布时间】:2021-07-14 18:46:25
【问题描述】:

我想对我通过 pandas 从 csv 生成的列表进行快速排序。 我想按特定列对其进行排序,例如数字顺序高度。

数据如下所示:

Number Name Height Width Weigth
1 Hatity 66.23 57.28 124.87
2 Bamity 22.56 843.7 123.67
3 Asoka 45.66 234.3 523.29

我已经能够使用此代码按第二列对其进行排序:

def quickSort(list):
  if not list:
      return list
  pivot = list[0]
  lesser = quickSort([x for x in list[1:] if x[1] < pivot[1]])
  greater = quickSort([x for x in list[1:] if x[1] >= pivot[1]])
  return lesser + [pivot] + greater
print(quickSort(product_list))

这适用于按名称排序。但我不知道要更改什么以按任何其他列排序。 如果有人可以帮助我,那就太好了。

【问题讨论】:

    标签: python list quicksort


    【解决方案1】:
    product_list = [[1,10],[3,8],[2,9]]
    
    def quickSort(list, compare_fn):
      if not list:
          return list
      pivot = list[0]
      lesser = quickSort([x for x in list[1:] if compare_fn(x, pivot)], compare_fn)
      greater = quickSort([x for x in list[1:] if not compare_fn(x, pivot)], compare_fn)
      return lesser + [pivot] + greater
    print(quickSort(product_list, lambda x,y: x[0] < y[0]))
    

    【讨论】: