字典里面的字典

时间:2014-02-19 14:16:46

标签: python dictionary passwords username

我正在尝试将字典放在较大的字典中以创建登录系统

if(os.path.exists('Users.dat')):  
    with open('Users.dat','rb')as f:        
        Users = pickle.load(f)
        f.close()
done=False
while not(done):
    userin = input('Username: ')
    passin = input('Password: ')
    if userin in dict:
        usernames = Users[userin]['Username']
        passwords = Users[userin]['Password']
    else:
        break

当我这样做时,它返回:

Username: JTomkins12
Password: 4621
Traceback (most recent call last):
  File "C:\Users\james\Lessons\Computing\Aptana Studio Workspace\Full
Program\FullProgram.py", line 274, in <module>
    loginmenu(choice)
  File "C:\Users\james\Lessons\Computing\Aptana Studio Workspace\Full
Program\FullProgram.py", line 255, in loginmenu
    if userin in dict:
TypeError: argument of type 'type' is not iterable

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您询问用户名是否在dict构造函数类型中。

你想要

if userin in Users:
     ...

要符合样式指南,您应该使用变量的小写名称,并为类名保留大写的首字母名称。

通常认为使用dict.get()更多Pythonic而不是检查密钥是否在dict中(原则上要求宽恕比允许更容易),但你正在做的事情有点复杂,所以我不会批评。

答案 1 :(得分:0)

如果在shell中键入以下内容,您将看到错误:

>>> dict
<type 'dict'>

这意味着您正在检查变量是否在类型中,因此TypeError

您打算输入:

if userin in Users:

(但就像马蒂亚斯所说,PEP8宁愿你称之为users。)