将 Python 列表拆分为多个变量

Splitting Python List Into Multiple Variables

大家好,我正在尝试为我的 Snake game.I 制作排行榜 game.I 有一个排序工作并将排序的文件从底部到顶部读回到列表中(我发现的排序是升序的,我需要降序)。

这是打印后的列表:

['', '47389094, purple', '', '9993, red', '', '34, Bobo', '', '19, Bob', '', '8, Jon', '', '1, Cameron']

我想要 10 个单独的变量来存储前 10 个值。 我需要将它们存储为“47389094 - 紫色”和“9993 - 红色”等,以便它们可以按顺序 table 显示在 PyGame window.

我试图弄清楚这个列表拆分,但我找不到任何与我想要的类似的例子。

这可能是一种低效的方法,所以如果有人有其他想法,那将是一个巨大的帮助。谢谢

编辑 -

这里是实际排序文件的代码:

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。除了向排行榜添加更多内容外,我无法弄清楚我改变了什么来打破它。 - 现在已修复,我删除了逗号和括号之间的 SPACE。

nl = [x.split(', ')[0] + ' - ' + x.split(', ')[1] for x in name if x]

你可以用split,就像你说的,用','作为分割字符串。然后我创建一个新列表,使用列表理解根据需要使用带连字符的 score/name 。 (if x 是为了忽略空字符串,而 [:10] 确保你只获得前十名的分数(当然有这里没有排序,所以它只得到前 10 个元素)

pygame.font.init()     #initialize pygame font module
myfont = pygame.font.SysFont('Comic Sans MS', 30)

scores = ['', '47389094, purple', '', '9993, red', '', '34, Bobo', '', '19, Bob', '', '8, Jon', '', '1, Cameron']

nl = [x.split(', ')[0] + ' - ' + x.split(', ')[1] for x in scores if x and len(x.split(', ')) == 2][:10]

for item in nl:
    score = myfont.render(item, False, (0, 0, 0))
    screen.blit(score,(0,0))

我认为这应该可以实现您的目标。

从问题上退一步,也许加载列表的过程可以重构为字典中的 insert/update 条记录?

由于顺序很重要,您可以使用 OrderedDict: https://docs.python.org/2/library/collections.html#collections.OrderedDict