Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中永久修改字典?_Python_Database_Data Structures_Dictionary - Fatal编程技术网

如何在python中永久修改字典?

如何在python中永久修改字典?,python,database,data-structures,dictionary,Python,Database,Data Structures,Dictionary,我正在制作一个程序,记录用户在玩游戏时的行为,并根据该数据{(发生这种情况时用户进行此移动):(执行此操作)}改进其性能。 问题是我将所有数据存储在一个单独的模块中的字典中,因此如果我关闭程序,所有数据都将返回默认值 请告诉我是否有更好的方法来存储数据,或者永久重写程序 一如既往地感谢您。将其存储在文件中是一种选择。Python附带了一个Pickle模块,允许您对字典进行Pickle。然后您将其本地存储在他们的磁盘上,然后当您需要再次加载它时,在他们再次启动游戏时使用Pickle加载它 编辑:

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

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


一如既往地感谢您。

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

编辑:

正如@alko所建议的,在您的情况下,模块将是一个更好的选择,因为您正在处理的数据已经是一个字典

例如,假设您有一些代码

data = {}
data["coords"] = [1,2]
通过简单地更改一行并添加另一行(可能过于简化),您可以轻松地将其转换为
工具架

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


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

可能更好reference@alko我以前没见过shelve,但在阅读了相关内容后,Zeppo似乎可以简单地将字典实例化替换为位于一个位置的工具架(理想情况下),现在您突然拥有了持久性存储。
data = shelve.open("some_filename") # create a shelf instead
data["coords"] = [1,2]
data.close()                        # remember to close it