在Python中永久更新词典

在Python中永久更新词典,python,json,Python,Json,我想永久更新字典中的键和值,我有一个字典存储在一个变量中,现在有两个键和值,我想通过输入添加键和值,并希望它们永远存储在字典中,即使我重新启动程序,现在发生的事情是用户给出的键和值成功地插入到字典中,但一旦我重新启动程序,它又回到了我在程序中给出的2个值 代码: (这给了我正确的输出) 输出: {'robin':'robin@mail.com“,“迈克尔”:”michael@mail.com“,“杰西”:”jessey@mail.com“} 但只要我重新启动程序并打印字典(邮件),它就会显示以下

我想永久更新字典中的键和值,我有一个字典存储在一个变量中,现在有两个键和值,我想通过输入添加键和值,并希望它们永远存储在字典中,即使我重新启动程序,现在发生的事情是用户给出的键和值成功地插入到字典中,但一旦我重新启动程序,它又回到了我在程序中给出的2个值

代码:

(这给了我正确的输出)

输出: {'robin':'robin@mail.com“,“迈克尔”:”michael@mail.com“,“杰西”:”jessey@mail.com“}

但只要我重新启动程序并打印字典(邮件),它就会显示以下输出:

{'robin':'robin@mail.com“,“迈克尔”:”michael@mail.com“}

如能回答,将不胜感激, 提前谢谢

希望它们永远存储在字典中,即使我重新启动了程序

您需要所谓的数据持久性,您可以使用内置模块来实现这一点。考虑下面的简单示例,如果用户知道,则提供用户最喜欢的颜色,否则请求一个并保存它

import shelve
d = shelve.open("userdata")
name = input("What is your name?")
if name in d:
    print("Your favorite color is", d[name])
else:
    color = input("What is your favorite color?")
    d[name] = color
d.close()

其中userdata是存储数据的文件名。

Python中的变量是临时变量。如果希望它们是永久性的,可以将数据存储在JSON文件或数据库中。或者您可以使用Daweo的方法,我建议您使用内置Python模块
shelve

我想pickle是一个很好的解决方案

import pickle, os
  
def load_emails(mail_file): 
    if os.stat(mail_file).st_size == 0:
        return {}
    mails = pickle.load(open(mail_file, 'rb')) 
    return mails

def store_emails(mails, mail_file):
    pickle.dump(mails, open(mail_file, 'wb'))                      

mail_file = "userdata"
mails = load_emails(mail_file)

cont_name = input('Enter the contact name: ')  
cont_mail = input('Enter the mail-id: ') 
mails[cont_name] = cont_mail

store_emails(mails, mail_file)

每次向词典添加新密钥时,您都需要调用
store_emails()
函数。

我应该在文件中保留什么,-词典格式,或任何其他格式?谢谢您,先生,但我应该在文件中保留什么,-词典格式,或任何其他格式???,请回复!!您可以存储任何类型的数据,甚至整个字典。非常感谢!我也因此感到困惑,请澄清:
import pickle, os
  
def load_emails(mail_file): 
    if os.stat(mail_file).st_size == 0:
        return {}
    mails = pickle.load(open(mail_file, 'rb')) 
    return mails

def store_emails(mails, mail_file):
    pickle.dump(mails, open(mail_file, 'wb'))                      

mail_file = "userdata"
mails = load_emails(mail_file)

cont_name = input('Enter the contact name: ')  
cont_mail = input('Enter the mail-id: ') 
mails[cont_name] = cont_mail

store_emails(mails, mail_file)