在Python中永久更新词典
我想永久更新字典中的键和值,我有一个字典存储在一个变量中,现在有两个键和值,我想通过输入添加键和值,并希望它们永远存储在字典中,即使我重新启动程序,现在发生的事情是用户给出的键和值成功地插入到字典中,但一旦我重新启动程序,它又回到了我在程序中给出的2个值 代码: (这给了我正确的输出) 输出: {'robin':'robin@mail.com“,“迈克尔”:”michael@mail.com“,“杰西”:”jessey@mail.com“} 但只要我重新启动程序并打印字典(邮件),它就会显示以下输出: {'robin':'robin@mail.com“,“迈克尔”:”michael@mail.com“} 如能回答,将不胜感激, 提前谢谢希望它们永远存储在字典中,即使我重新启动了程序 您需要所谓的数据持久性,您可以使用内置模块来实现这一点。考虑下面的简单示例,如果用户知道,则提供用户最喜欢的颜色,否则请求一个并保存它在Python中永久更新词典,python,json,Python,Json,我想永久更新字典中的键和值,我有一个字典存储在一个变量中,现在有两个键和值,我想通过输入添加键和值,并希望它们永远存储在字典中,即使我重新启动程序,现在发生的事情是用户给出的键和值成功地插入到字典中,但一旦我重新启动程序,它又回到了我在程序中给出的2个值 代码: (这给了我正确的输出) 输出: {'robin':'robin@mail.com“,“迈克尔”:”michael@mail.com“,“杰西”:”jessey@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)