为了账号安全,请及时绑定邮箱和手机立即绑定

如何对字典进行持久更改?

如何对字典进行持久更改?

动漫人物 2021-10-10 14:03:41
我正在尝试制作一个小应用程序,它可以根据存储的材料/浓度字典计算电荷重量。有时需要更新和存储字典以备将来使用。下面的代码片段要求用户为 dict 提供新值,然后更新它。baseDict={'a':10, 'b':20, 'c':30, 'd':40}def updateDict(key, value):    temp = {key : value}    baseDict.update(temp)    return baseDictkey = str(input('Enter key\n'))value = input('Enter value\n')baseDict = updateDict(key, value)问题是当 shell 重新启动时,baseDict 返回到原始值。我从 ~ 2010 年找到了类似问题的解决方案,但他们使用 Pickle、shelve、JSON 在单独的文件中存储/检索 dict,并在每次运行代码时加载它。我打算将代码转换成一个小的 .exe 文件,以便在没有 py 的计算机上运行。任何关于如何使 baseDict 在这种环境中保持更新的建议将不胜感激。
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

使用jsonorpickle比保存明文并对其进行ast.literal_evaling更好。我会推荐json:


对于json,首先运行一次:


import json


with open('baseDict.json', 'w') as f:

    json.dump({'a':10, 'b':20, 'c':30, 'd':40}, f)

然后:


import json


with open('baseDict.json','r') as f:

    baseDict = json.load(f)


# your code


with open('baseDict.json', 'w') as f:

    json.dump(baseDict, f)

请参阅此处了解为什么json比ast.literal_eval.


查看完整回答
反对 回复 2021-10-10
?
Helenr

TA贡献1780条经验 获得超4个赞

据我所知,保持这种更改的唯一方法是使用本地存储。它可以与 Jsons、文本文件、数据库一起使用,甚至您可以创建自己的编码类型的文件。不过,大多数应用程序都需要安装,也许将您的数据加密并将其存储在应用程序在安装过程中创建的目录中的秘密文件中,这可能是您的选择。


查看完整回答
反对 回复 2021-10-10
?
holdtom

TA贡献1805条经验 获得超10个赞

你可以把它保存到txt,然后再加载回来。


所以自己运行一个代码,如下所示:


with open('test.txt','w') as f:

    f.write("{'a':10, 'b':20, 'c':30, 'd':40}")

然后,使用以下代码运行另一个模块:


import ast

with open('test.txt','r') as f:

    baseDict=ast.literal_eval(f.read().rstrip())


def updateDict(key, value):

    temp = {key : value}

    baseDict.update(temp)

    return baseDict


key = str(input('Enter key\n'))

value = input('Enter value\n')

baseDict = updateDict(key, value)

with open('test.txt','w') as f:

    f.write(str(baseDict))


查看完整回答
反对 回复 2021-10-10
  • 3 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信