Python 需要定义字典而不进行更改

Python 需要定义字典而不进行更改,python,dictionary,passwords,cloud,Python,Dictionary,Passwords,Cloud,我正在尝试做一个密码保护程序,用户可以插入一个密码,它将保存到计算机上。我从 password = str(input("What is your password that you want to save?")) url = str(input("Which is the site that you want your password to save to?")) password_saved = {url : password} with open

我正在尝试做一个密码保护程序,用户可以插入一个密码,它将保存到计算机上。我从

password = str(input("What is your password that you want to save?"))
url = str(input("Which is the site that you want your password to save to?"))
password_saved = {url : password}
with open('password_saved', 'wb') as password_saved_file:
 pickle.dump(password_saved, password_saved_file)
print(password_saved)
但是,
password\u saved={url:password}
会将整个字典重置为该字典,因此如果您运行它,它只会重置为一个,而不会保存所有字典。因此,我尝试用以下内容替换它:

password_saved[url] = password

但是,它会说它没有定义。如何定义字典而不进行任何更改(包括空格)?

首先声明字典,然后将索引和值传递给字典

password_saved = {}
password_saved[url] = password

首先,声明一个字典,然后将索引和值传递给字典

password_saved = {}
password_saved[url] = password
你说“it”没有定义,是指字典吗?如果是这样,这可能只是在调用它之前初始化它的问题。现在,您正在创建一个名为“password\u saved”的新词典,其中只有一个条目。它应该看起来像

password_saved = {}

...

password = str(input("What is your password that you want to save?"))
url = str(input("Which is the site that you want your password to save to?"))
password_saved[url] = password
with open('password_saved', 'wb') as password_saved_file:
    pickle.dump(password_saved, password_saved_file)
print(password_saved)
你说“it”没有定义,是指字典吗?如果是这样,这可能只是在调用它之前初始化它的问题。现在,您正在创建一个名为“password\u saved”的新词典,其中只有一个条目。它应该看起来像

password_saved = {}

...

password = str(input("What is your password that you want to save?"))
url = str(input("Which is the site that you want your password to save to?"))
password_saved[url] = password
with open('password_saved', 'wb') as password_saved_file:
    pickle.dump(password_saved, password_saved_file)
print(password_saved)


事实上,你的代码很好。但是,如果你输入相同的值2次,它就不会显示。确保为每个URL尝试不同的URL,以确保一切正常。

实际上,您的代码都很好。但是,如果你输入相同的值2次,它就不会显示。请确保为每个URL尝试不同的URL,以确保一切正常。

是的,但如果我这样做,则保存的密码将重置为空,因为我刚刚在第一行将其声明为空。有什么办法可以解决吗?@idiotic\u nub你需要对你的pickle进行反序列化,修改生成的字典,然后重新对它进行重新序列化。@juanpa.arriviilaga我真的不明白你对我的pickle进行重新序列化和反序列化是什么意思。你介意给我举个例子吗?是的,但如果我这样做,那么保存的密码将重置为空,因为我刚刚在第一行声明它为空。有什么办法可以解决吗?@idiotic\u nub你需要对你的pickle进行反序列化,修改生成的字典,然后重新对它进行重新序列化。@juanpa.arriviilaga我真的不明白你对我的pickle进行重新序列化和反序列化是什么意思。你介意给我举个例子吗?你需要修改一下字典。你实际上是在定义一个新的。这就是问题所在谢谢!你介意解释一下我怎么做吗?@biotic\u nub你想为一个网站存储密码吗?如果没有,那么您可能需要以附加模式打开文件。@Hetal Thacker回答您的问题,不,我没有为单个网站存储密码。但是,如果我使用appened,我会收到错误,因为我使用的是字典,而不是列表。您需要对字典进行更改。你实际上是在定义一个新的。这就是问题所在谢谢!你介意解释一下我怎么做吗?@biotic\u nub你想为一个网站存储密码吗?如果没有,那么您可能需要以附加模式打开文件。@Hetal Thacker回答您的问题,不,我没有为单个网站存储密码。但是,如果我使用Appended,我会收到错误,因为我使用的是字典,而不是列表。是的,但是如果我使用password_saved={},那么当我运行它时,它将重新发送到一个空白的听写器,我只想定义字典,但我不想对它进行更改。您必须在某个时候创建字典。当你启动程序的时候做。如果你这么想的话,程序结束后它不会保存你的字典。我的意思是,当我执行password_saved={}和上次运行时,我执行了password_saved={'':'password'},然后字典会将其返回为空。这也可以初始化字典,使用password\u saved[url]=password应该不会有任何问题。像那样再试一次,让我知道会发生什么,因为该语句没有问题。是的,但是如果我使用password_saved={},那么当我运行它时,它将重新发送到一个空白的听写器,我只想定义字典,但我不想对它进行更改。你必须在某个时候创建字典。当你启动程序的时候做。如果你这么想的话,程序结束后它不会保存你的字典。我的意思是,当我执行password_saved={}和上次运行时,我执行了password_saved={'':'password'},然后字典会将其返回为空。这也可以初始化字典,使用password\u saved[url]=password应该不会有任何问题。像那样再试一次,让我知道发生了什么,因为这句话没有问题。