scores.append((item, score))
output_file.write(scores.sort()[:20] + '\n')
Run Code Online (Sandbox Code Playgroud)
我需要对分数进行排序并将前 20 个分数写入文件中。上面是我的代码,我最终得到了 TypeError: 'NoneType' object is not subscriptable
谢谢。
通常例外应该是
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)
如果您想稍后再次访问已排序的列表,则应选择第一个选项,但如果您想稍后再次访问未排序的列表,则必须选择第二个选项。如果您不再需要该列表,您可以选择任何选项。
| 归档时间: |
|
| 查看次数: |
4722 次 |
| 最近记录: |