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

我正在尝试制作一个小应用程序,它可以根据存储的材料/浓度字典计算电荷重量。

有时需要更新和存储字典以备将来使用。


下面的代码片段要求用户为 dict 提供新值,然后更新它。


baseDict={'a':10, 'b':20, 'c':30, 'd':40}

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)

问题是当 shell 重新启动时,baseDict 返回到原始值。

我从 ~ 2010 年找到了类似问题的解决方案,但他们使用 Pickle、shelve、JSON 在单独的文件中存储/检索 dict,并在每次运行代码时加载它。


我打算将代码转换成一个小的 .exe 文件,以便在没有 py 的计算机上运行。

任何关于如何使 baseDict 在这种环境中保持更新的建议将不胜感激。


动漫人物
浏览 216回答 3
3回答

郎朗坤

使用jsonorpickle比保存明文并对其进行ast.literal_evaling更好。我会推荐json:对于json,首先运行一次:import jsonwith open('baseDict.json', 'w') as f:    json.dump({'a':10, 'b':20, 'c':30, 'd':40}, f)然后:import jsonwith open('baseDict.json','r') as f:    baseDict = json.load(f)# your codewith open('baseDict.json', 'w') as f:    json.dump(baseDict, f)请参阅此处了解为什么json比ast.literal_eval.

Helenr

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

holdtom

你可以把它保存到txt,然后再加载回来。所以自己运行一个代码,如下所示:with open('test.txt','w') as f:    f.write("{'a':10, 'b':20, 'c':30, 'd':40}")然后,使用以下代码运行另一个模块:import astwith open('test.txt','r') as f:    baseDict=ast.literal_eval(f.read().rstrip())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)with open('test.txt','w') as f:    f.write(str(baseDict))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python