我从一个排序的csv创建了以下列表
list1 = sorted(csv1, key=operator.itemgetter(1))
实际上,我想根据两个标准对列表进行排序:首先是字段1中的值,然后是字段2中的值。我怎么做呢?
我从一个排序的csv创建了以下列表
list1 = sorted(csv1, key=operator.itemgetter(1))
实际上,我想根据两个标准对列表进行排序:首先是字段1中的值,然后是字段2中的值。我怎么做呢?
当前回答
employees.sort(key = lambda x:x[1])
employees.sort(key = lambda x:x[0])
我们也可以用.sort和lambda一起使用2次,因为python的sort是稳定的。这将首先根据第二个元素x[1]对列表进行排序。然后,它将排序第一个元素x[0](最高优先级)。
employees[0] = "Employee's Name"
employees[1] = "Employee's Salary"
这相当于做以下事情:
employees.sort(key = lambda x:(x[0], x[1]))
其他回答
如果你想对数组进行排序, 根据升序和降序遵循下面提到的方法。为此,你可以使用函数。 让我们考虑下面的例子: 输入:[[1、2],[3 3],(2,1)[1],[4 1],[3,1]] 预期输出:[[4 1],[3,1],[3 3],(2,1)[1],[1、2]] 代码使用:
arr = [[1,2],[3,3],[2,1],[1,1],[4,1],[3,1]]
arr.sort(key=lambda ele: (ele[0], -ele[1]), reverse=True)
# output [[4, 1], [3, 1], [3, 3], [2, 1], [1, 1], [1, 2]]
负号是程序达到预期结果的原因。
python 3 https://docs.python.org/3.5/howto/sorting.html#the-old-way-using-the-cmp-parameter
from functools import cmp_to_key
def custom_compare(x, y):
# custom comparsion of x[0], x[1] with y[0], y[1]
return 0
sorted(entries, key=lambda e: (cmp_to_key(custom_compare)(e[0]), e[1]))
是这样的:
import operator
list1 = sorted(csv1, key=operator.itemgetter(1, 2))
按升序可以使用:
sorted_data= sorted(non_sorted_data, key=lambda k: (k[1],k[0]))
或者按降序排列,你可以用:
sorted_data= sorted(non_sorted_data, key=lambda k: (k[1],k[0]),reverse=True)
employees.sort(key = lambda x:x[1])
employees.sort(key = lambda x:x[0])
我们也可以用.sort和lambda一起使用2次,因为python的sort是稳定的。这将首先根据第二个元素x[1]对列表进行排序。然后,它将排序第一个元素x[0](最高优先级)。
employees[0] = "Employee's Name"
employees[1] = "Employee's Salary"
这相当于做以下事情:
employees.sort(key = lambda x:(x[0], x[1]))