python中的一个键错误

时间:2017-04-25 12:53:35

标签: python

我正在尝试写一个"多用户"程序在程序运行期间为每个登录的用户存储商品列表。为此,我创建了一个名为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几次。到目前为止,没有任何效果。

我真的很感激我的问题的任何解决方案。谢谢!

2 个答案:

答案 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.

希望有所帮助