我的意思是,字典會以這種方式填充:(
{f"{username}": {"Username": username, "Password": password}}
應該看起來像這樣:
{"test1": {"Username": "test1", "Password": "test-password"}}
)(......以這種方式,)所以你可以通過用戶名()訪問子字典f"{username},然后在sub-dict,它會顯示用戶名和密碼。
例如,如果我有幾個用戶名,我想在添加子字典的主字典中創建新值。(例如,您將用戶名和密碼放入 sub-dict 中,然后將其添加到 main-dict 中,使用 with 清除{dict}.clear()
在任何一個回圈中都應該有可能做到的一切(不管它的while或for i in range()
我試圖通過以下代碼實作這一目標:
maindict = {}
subdict = {}
while True:
username = input("Enter username: ")
password = input("Enter password: ")
subdict["username"] = username
subdict["password"] = password
maindict[username] = subdict
print(maindict)
但我的問題是,如果你運行一次,它會回傳正確的東西。但是在第二次之后,子字典的第一個值被第二個輸入覆寫,它在主字典中創建了一個新的新值(這是正確的,但它不應該覆寫子字典的值) dict 在 main-dict 的第一個值中)
如果你不能再跟著我了,它會列印出這個:
Enter username: test1
Enter password: test1
{'test1': {'username': 'test1', 'password': 'test1'}}
Enter username: test2
Enter password: test2
{'test1': {'username': 'test2', 'password': 'test2'}, 'test2': {'username': 'test2', 'password': 'test2'}}
如您所見,它會覆寫(子字典的)“test1”值并在主字典中創建第二個值。
抱歉,如果它令人困惑,我只是找不到解決方案。如果我解釋得不好,請發表評論并盡我所能進一步解釋。
謝謝!:)
uj5u.com熱心網友回復:
您遇到此問題是因為您subdict = {}在 while 回圈之外。因此,每次更新值時username,password您都在更新同一個字典subdict,而不是為每個用戶創建一個新字典。因此,您應該將該行保留subdict = {}在您的 while 回圈中,這將為每個用戶創建一個新字典。
uj5u.com熱心網友回復:
問題似乎在于,在該行maindict[username] = subdict中,所有鍵的值都指的是同一個變數subdict,因此當您第二次運行它時會重復。
要解決此問題,您只需將該行替換為maindict[username] = subdict.copy(),這將確保以前的條目不會被覆寫。這可能不是最高效的解決方案,但它可以完成作業。
uj5u.com熱心網友回復:
初始化回圈內的空subdict,否則它總是指向記憶體中的同一個物件并且值被覆寫:
maindict = {}
while True:
subdict = {}
username = input("Enter username: ")
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488139.html
標籤:Python python-3.x 字典
上一篇:有效計算字典中鍵的平均值
