【发布时间】:2017-08-02 02:47:19
【问题描述】:
大家好,我正在尝试为我的 Snake 游戏制作排行榜。我有一个排序工作并将排序后的文件读回从底部到顶部的列表(我发现的排序是升序,我需要降序)。
这是打印后的列表:
['', '47389094, purple', '', '9993, red', '', '34, Bobo', '', '19, Bob', '', '8, Jon', '', '1, Cameron']
我想要 10 个单独的变量来存储前 10 个值。 我需要将它们存储为“47389094 - 紫色”和“9993 - 红色”等,以便它们可以显示在 PyGame 窗口的有序表中。
我试图弄清楚这个列表拆分,但我找不到任何与我想要的类似的例子。
这可能是一种低效的方法,因此如果有人有其他想法,那将是一个巨大的帮助。谢谢。
编辑 -
这是对文件进行实际排序的代码:
with open('Leaderboard.csv') as sample, open('LeaderBoardSort.csv', "w") as out:
csv1=csv.reader(sample)
header = next(csv1, None)
csv_writer = csv.writer(out)
if header:
csv_writer.writerow(header)
csv_writer.writerows(sorted(csv1, key=lambda x:int(x[0])))
这个建议最初有效,但现在抛出 IndexError: list index out of range。除了在排行榜中添加更多内容之外,我无法弄清楚我改变了什么来打破它。 - 现在已修复,我删除了逗号和括号之间的空格。
nl = [x.split(', ')[0] + ' - ' + x.split(', ')[1] for x in name if x]
【问题讨论】:
-
我不明白你在问什么。您显示的列表有六个真实项目和六个空字符串,但您似乎想要十个项目?除了摆脱空字符串之外,您还想有什么不同?它只是改变破折号的逗号吗?您能否展示您正在使用的生成列表的代码(因为修复将空字符串放入列表的代码可能比在它们存在后将其剥离更容易)?
-
列表将有十个项目,尚未全部添加。我可能应该把它们都放进去。
-
多余的空格通过排序添加到CSV文件中。我不确定如何在评论中添加代码块,所以就是这样:以 open('Leaderboard.csv') 作为示例, open('LeaderBoardSort.csv', "w") 作为输出: csv1=csv.reader(示例) header = next(csv1, None) csv_writer = csv.writer(out) if header: csv_writer.writerow(header) csv_writer.writerows(sorted(csv1, key=lambda x:int(x[0])))
-
不要将代码放在注释中。而是edit您的问题包含相关代码。
-
好的,我会这样做的。
标签: python list sorting split leaderboard