为什么在代码段中而不在主代码块中显示“ TypeError:'int'对象不可下标”?

我正尝试在Python中学习嵌套列表,问题是找到得分最高的人,该人阅读3个输入,即没有。条目,学生姓名和学生分数。

我执行以下代码时,我的代码工作正常:

ns = []
for _ in range(int(input())):
   name = input()
   score = float(input())
   ns += [[name,score]]

sc = sorted(set([x[1] for x in ns]))

for name in sorted(x[0] for x in ns if x[1] == sc[1]):
   print(name)  

但是当我尝试执行该代码段时:

ns = [21,21,13,24,45,6]
sc = sorted(set([x[1] for x in ns]))
print(sc)

这给了我错误:

 sc = sorted(set([x[1] for x in ns]))
TypeError: 'int' object is not subscriptable

是因为代码段中的列表是整数吗? 如果是这样,该如何实现?为什么要在第一个代码中起作用?

xinguozh 回答:为什么在代码段中而不在主代码块中显示“ TypeError:'int'对象不可下标”?

POST _sql { "query": "SELECT * FROM staff_tasks WHERE task.staff.name = 'john'" } 中的x[x[1] for x in ns],不可下标。相反,您可以编写int,而不会引发任何错误。请注意,[x for x in ns]只是一个列表,而不是列表的列表。

但是,在您编写的第一段代码中,ns中定义的ns实际上是一个列表列表,因此您可以使用嵌套下标,例如ns += [[name,score]]。 / p>

要对ns[[1]]的列表进行排序,只需在[score,name]上调用sorted(其中ns是列表列表):

ns

它将根据分数和名称对嵌套列表进行排序,

ns = [[21,'tom'],[21,'john'],[13,'ali'],[24,'sarah']]
sorted(ns)
本文链接:https://www.f2er.com/2787320.html

大家都在问