类型错误:“NoneType”对象不可下标,scores.sort()

ssh*_*h26 1 sorting ipython

scores.append((item, score))
output_file.write(scores.sort()[:20] + '\n')
Run Code Online (Sandbox Code Playgroud)

我需要对分数进行排序并将前 20 个分数写入文件中。上面是我的代码,我最终得到了 TypeError: 'NoneType' object is not subscriptable

谢谢。

Byt*_*der 5

通常例外应该是

TypeError: 'NoneType' has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

但是,你不能运行这个:

scores.sort()[:20]
Run Code Online (Sandbox Code Playgroud)

这只是因为list.sort()就地修改列表并且不返回任何内容(这意味着它隐式返回None)。

所以你要么必须scores.sort()在切片操作之前将其放在一个单独的语句中......

scores.append((item, score))
scores.sort()
output_file.write(scores[:20] + '\n')
Run Code Online (Sandbox Code Playgroud)

...或者您使用内置方法sorted(...),不修改原始列表,但返回排序的副本。

scores.append((item, score))
output_file.write(sorted(scores)[:20] + '\n')
Run Code Online (Sandbox Code Playgroud)

如果您想稍后再次访问已排序的列表,则应选择第一个选项,但如果您想稍后再次访问未排序的列表,则必须选择第二个选项。如果您不再需要该列表,您可以选择任何选项。