仅使用一列对嵌套列表进行排序

Sorting a nested list using only one column

我制作了一个嵌套列表 [[name, score]],就像 [['Ashish', 32], ['Varsha', 32], ['Nano', 31.9], ['Sparsh', 40.3], ['Ria', 30.2]] 一样,我想对这个列表进行排序。到数字。

a['score'].sort(reverse = True)

我试过上面的代码,但出现了这个错误,

TypeError: list indices must be integers or slices, not str

我应该尝试什么?

基本上是@AndreyKesley 所说的。

您的嵌套列表不是一个以'score'作为一列名称的二维列表。这是一个列表列表,你不能只抓取第二列。

但是,您可以按每个元素的第二项排序:

a = [['Ashish', 32], ['Varsha', 32], ['Nano', 31.9], ['Sparsh', 40.3], ['Ria', 30.2]]

a.sort(key=lambda el: el[1], reverse=True)
print(a)

[['Sparsh', 40.3], ['Ashish', 32], ['Varsha', 32], ['Nano', 31.9], ['Ria', 30.2]]

或没有 lambda 的对初学者更友好的版本:

import operator

a = [['Ashish', 32], ['Varsha', 32], ['Nano', 31.9], ['Sparsh', 40.3], ['Ria', 30.2]]

a.sort(key=operator.itemgetter(1), reverse=True)
print(a)