我从一个排序的csv创建了以下列表
list1 = sorted(csv1, key=operator.itemgetter(1))
实际上,我想根据两个标准对列表进行排序:首先是字段1中的值,然后是字段2中的值。我怎么做呢?
我从一个排序的csv创建了以下列表
list1 = sorted(csv1, key=operator.itemgetter(1))
实际上,我想根据两个标准对列表进行排序:首先是字段1中的值,然后是字段2中的值。我怎么做呢?
当前回答
使用下面的字典排序列表将排序列表降序第一列为工资,第二列为年龄
d=[{'salary':123,'age':23},{'salary':123,'age':25}]
d=sorted(d, key=lambda i: (i['salary'], i['age']),reverse=True)
输出:[{“工资”:123年,“年龄”:25},{“工资”:123年,“年龄”:23}]
其他回答
按升序可以使用:
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)
使用下面的字典排序列表将排序列表降序第一列为工资,第二列为年龄
d=[{'salary':123,'age':23},{'salary':123,'age':25}]
d=sorted(d, key=lambda i: (i['salary'], i['age']),reverse=True)
输出:[{“工资”:123年,“年龄”:25},{“工资”:123年,“年龄”:23}]
使用lambda函数时不需要导入任何东西。 下面按第一个元素排序,然后按第二个元素排序。你也可以通过一个字段升序排序,另一个字段降序排序,例如:
sorted_list = sorted(list, key=lambda x: (x[0], -x[1]))
是这样的:
import operator
list1 = sorted(csv1, key=operator.itemgetter(1, 2))
在阅读了这篇文章中的答案后,我写了一个通用的解决方案,适用于任意数量的列:
def sort_array(array, *columns):
for col in columns:
array.sort(key = lambda x:x[col])
OP会这样称呼它:
sort_array(list1, 2, 1)
先按列2排序,再按列1排序。 (最重要的一栏放在最后)