通过排序列表列
问题描述:
我有这个名单是这样的:通过排序列表列
list1 = [["A",5,2,8,3],["B",9,5,1,5]]
我试图用第二列排序。我期望list1然后是
[["B",9,5,1,5],["A",5,2,8,3]]
因为9大于5对吗?我正在使用
sorted(lis1, key=lambda a : a[1])
但是它没有对它进行排序;它仍然和以前一样。为什么这不起作用?
答
你只需要扭转这种局面:
list1 = [["A",5,2,8,3],["B",9,5,1,5]]
list1 = sorted(list1, key=lambda a : a[1], reverse=True)
print(list1)
# outputs [["B",9,5,1,5],["A",5,2,8,3]]
9> 5,所以说到后来,除非你扭转。
答
使用operator.itemgetter()函数:
from operator import itemgetter
list1 = [["A",5,2,8,3],["B",9,5,1,5],["C",1,2,8,3]]
print(sorted(list1, key=itemgetter(1)))
print(sorted(list1, key=itemgetter(1), reverse=True))
输出:
[['C', 1, 2, 8, 3], ['A', 5, 2, 8, 3], ['B', 9, 5, 1, 5]]
[['B', 9, 5, 1, 5], ['A', 5, 2, 8, 3], ['C', 1, 2, 8, 3]]
它通过默认按升序顺序。添加参数'reverse = True'到你的'sorted'函数来产生所需的输出 – gtlambert