2017-04-19 39 views
1

我在python中为我的游戏创建了一个排行榜,我希望它能够保存,以便我可以在下次打开游戏时检索它。如何将数组保存到python文件中

Leader_board = [] 
Temp_Leader_board = [] 

PlayerName = str(No1+No2+No3+No4+No5+No6+No7+No8) 
Array = [str(Deaths),PlayerName] 
Temp_Leader_board.append(Array) 
Leader_board = sorted(Temp_Leader_board, key=lambda player: player[0]) 

最后一行是将评分从最小到最大。

+0

你有两个主要选择。您可以将每个元素以自定义格式存储在列表中。或者你可以使用['pickle'](https://docs.python.org/3/library/pickle.html)将你的列表序列化到一个文件中。 –

+0

顺便说一句,我们把它们称为Python中的列表,而不是数组。 – Novel

回答

1

由于@matusko和@Christian院长说,你在找什么是系列化,其中Python有一个内置的模块被称为泡菜。就个人而言,因为这看起来像一个更简单的序列化用例,所以我建议去cPickle,它与pickle做同样的事情,但速度更快,因为它是用C写的。See here关于如何使用它们来序列化不同类型的数据。

0

听起来就像你正在寻找一种序列化你的列表的方式,以便它可以保存到一个文件,然后在以后回读。对于序列化python对象,可以使用python模块picklereference page)。有关写入和读取文件的信息,请查看here

1

我的简单序列化首选解决方案是yaml。它具有人类可读性的优点,但具有仅能够序列化简单数据结构的缺点。它看起来像它会在这种情况下正常工作:

测试代码:

leader_board = [ 
    [30, 'Player A'], 
    [10, 'Player B'], 
] 

import yaml 

# save the leader board 
with open('LeaderBoard.yml', 'w') as f: 
    f.write(yaml.dump(leader_board)) 

# read the leader board from yaml file 
with open('LeaderBoard.yml', 'r') as f: 
    read_leader_board = yaml.load(f.read()) 

# show yaml format and restored data 
print(yaml.dump(leader_board)) 
print(read_leader_board) 

结果:

- [30, Player A] 
- [10, Player B] 

[[30, 'Player A'], [10, 'Player B']] 
相关问题