我正在尝试写一个"多用户"程序在程序运行期间为每个登录的用户存储商品列表。为此,我创建了一个名为login_to_user的函数,它基本上检查用户是否已经登录,如果没有,则创建一个新的位置。嵌套的dict var user_database来存储他的商店列表。
Traceback (most recent call last):
File "Shopping-MichaelEX4.py", line 170, in <module>
main()
File "Shopping-MichaelEX4.py", line 164, in main
login_to_user(user_database)
File "Shopping-MichaelEX4.py", line 156, in login_to_user
user_database[username]["shop_list"] = 0 #gives place to new user in
dictionary
KeyError: 'test'
但在我尝试运行程序并输入测试用户后,我将始终收到以下错误:
{{1}}
我读到了关键错误,但从未找到解决问题的方法。我尝试以不同的方式初始化嵌套的dict几次。到目前为止,没有任何效果。
我真的很感激我的问题的任何解决方案。谢谢!
答案 0 :(得分:1)
当您尝试user_database[username]["shop_list"] = 0
时,字典无法在username
中找到user_database
,因此会出错。
因此,首先在username
中创建user_database
密钥,如下面的解决方案中所述:
def login_to_user(user_database):
username = raw_input("Enter Your username: ")
for username in user_database.keys():
if(username in user_database):
shop_list = user_database[username]["shop_list"]
else:
user_database[username] = {} # Create username in user_database
user_database[username]["shop_list"] = 0 #gives place to new user in dictionary
shop_list = user_database[username]["shop_list"]
shop_list = get_list_from_user()
shop_list = organize_list(shop_list)
答案 1 :(得分:0)
您无法设置属性&#34; shop_list&#34;您的新用户,因为您没有告诉您的词典他们是新用户。 您的其他声明应以:
开头else:
user_database[username] = {} # initialize your new user
user_database[username]["shop_list"] = 0 # then you can initialize the user's shopping list.
希望有所帮助