迭代由pickle加载的对象列表

时间:2017-01-11 20:59:06

标签: python pickle

在游戏的一部分中,我创建了一个用户输入用户名。用户名和用户的分数保存在一个对象中,该对象被腌制到外部文件中,该外部文件中包含其他腌制分数对象。

然后我在UI上有一个按钮,如果点击该按钮,则按降序显示所有玩家的最高分数。

我将文件加载到一个列表中,其中包含我找到的代码here

Highscores = []
Highscores = pickle.load(open("Highscores.txt", "rb"))

然后我使用冒泡排序对下面显示的对象列表进行排序。

def bubbleSort():
    swapOccured = True
    while swapOccured == True:
        swapOccured = False
        for i in Highscores:
            if Highscores[i].score > Highscores[i + 1].score:
                hold = Highscores[i + 1]
                Highscore[i + 1] = Highscores[i]
                Highscores[i] = Highscores[i + 1]
                swapOccured = True

返回的错误是

for index in Highscores:
TypeError: iteration over non-sequence

我已经查看过类似的其他问题,例如here,但错误是程序循环遍历一个对象而不是循环遍历一个对象列表。我很确定它与示例的错误不一样,我认为可能是加载在带有泡菜的对象列表中但是我被卡住了。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

就像@Id @Column(name = "roleId", unique = true, nullable = false) private Integer roleId; 将单个对象转储到文件一样,pickle.dump从文件中加载单个对象。如果您需要列表,则需要全部加载:

pickle.load