仅使用一列对嵌套列表进行排序
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)
我制作了一个嵌套列表 [[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)