首页 > 解决方案 > 按列快速排序列表

问题描述

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

数据如下所示:

数字 姓名 高度 宽度 重量
1 仇恨 66.23 57.28 124.87
2 恶毒 22.56 843.7 123.67
3 阿育王 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))

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

标签: pythonlistquicksort

解决方案


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

推荐阅读