python - 如何永久修改python中的字典?

标签 python database data-structures dictionary

我正在制作一个程序来记录用户在玩游戏时的行为,并根据该数据改进其性能{(用户在发生这种情况时采取此行动):(这样做)}。 问题是我将所有这些数据存储在一个单独模块的字典中,所以如果我关闭程序,一切都会恢复为默认值。

请告诉我是否有更好的方法来存储数据,或者永久重写程序的方法。

一如既往的感谢。

最佳答案

将其存储在文件中是一种选择。 Python 带有一个 Pickle 模块,允许您对字典进行 pickle。然后你将它存储在他们本地的磁盘上,然后当你需要再次加载它时,当他们再次开始游戏时使用 Pickle 加载它。

编辑:

正如@alko 所建议的那样,shelve在您的情况下,模块将是更好的选择,因为您正在使用的数据已经是字典。

例如,假设您有一些代码看起来像

data = {}
data["coords"] = [1,2]

您可以通过简单地更改一行并添加另一行(可能过于简化)轻松地将其转换为 shelf

data = shelve.open("some_filename") # create a shelf instead
data["coords"] = [1,2]
data.close()                        # remember to close it

现在您拥有持久存储,而无需更改任何字典访问代码。

请注意,如果您指定的文件名已经存在,它将简单地打开它并允许您读/写,因此您不需要任何额外的逻辑来区分第一次玩游戏的玩家和玩家从上一届 session 继续。

关于python - 如何永久修改python中的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20646821/

相关文章:

java - java.util.Stack 的迭代器中是否有错误?

c++ - C++ 中的散列指针值

c++ - Qt将数据结构分成组

python - 如何使用 django 正确显示用户生成的图像?

mysql - 将字母数字值插入 varchar 类型列

python - Tensorflow 导入错误

database - 限制允许的记录数

mysql - 将多个mysql数据库从远程服务器下载到本地计算机的正确方法

python - 是否可以在没有滚动条的情况下滚动 Tkinter 列表框?

python - 在 Tensorflow 对象检测 API 中裁剪图像并显示