Python 词典内部列表

Python 词典内部列表,python,list,dictionary,nested-lists,Python,List,Dictionary,Nested Lists,假设我有以下列表: a=[ {"user":"John","password":"123"} , {"user":"Mike","password":"12345"} ,{"user":"Peter","password":"qwerty"}] user=input("insert your username") password=input("insert your password") 现在我想知道如果输入的用户和密码在前面的列表中,我如何解决这个问题 如果我现在想有3个场景:一个是用户

假设我有以下列表:

a=[ {"user":"John","password":"123"} , {"user":"Mike","password":"12345"} ,{"user":"Peter","password":"qwerty"}]

user=input("insert your username")
password=input("insert your password")
现在我想知道如果输入的用户和密码在前面的列表中,我如何解决这个问题

如果我现在想有3个场景:一个是用户和密码匹配,第二个是用户名正确但密码不正确,最后一个是用户名不存在

if {'user':user,'password':password} in a:
    print("okay")
else:
    if {'user':user} in a and {'password':password} not in a:
        print("user okay, but incorrect pass")
    else:
        print("No username")
这种类型的代码不起作用,对吗? 那么,如何解决第一步之后的第二步呢?

使用:

if {'user':user,'password':password} in a:
    # it is already in there
else:
    # it isn't in there
编辑

使用:

使用:

编辑

使用:

一种方法是:

一种方法是:


您可以按照@U9 Forward建议的解决方案进行操作,或者您可以更改dict,而不必拥有字典列表,您只需拥有一个字典,其中键=实际名称,值=实际密码。如果您的dict中有很多对象,并且这个函数将经常被调用,那么这个解决方案在时间复杂度方面会更好

因此,您首先将列表a转换为名为user\u password\u dict的dict

之后,您可以通过以下语句轻松检查用户密码中是否存在用户和相应的密码:

if user in user_password_dict and user_password_dict[user] == password:
    # do something here
else:
    # do something here

您可以按照@U9 Forward建议的解决方案进行操作,或者您可以更改dict,而不必拥有字典列表,您只需拥有一个字典,其中键=实际名称,值=实际密码。如果您的dict中有很多对象,并且这个函数将经常被调用,那么这个解决方案在时间复杂度方面会更好

因此,您首先将列表a转换为名为user\u password\u dict的dict

之后,您可以通过以下语句轻松检查用户密码中是否存在用户和相应的密码:

if user in user_password_dict and user_password_dict[user] == password:
    # do something here
else:
    # do something here

如果你能改变它的结构,我建议你直接使用字典,即{'Jhon':'1234','Mike':'12345}这是一种练习,但感谢你的输入。如果你能改变它的结构,我建议你直接使用字典,即{'Jhon':'1234','Mike':'12345}这是一种练习,但是谢谢你的意见。嗨,是的,我承认你的方法很简单,而且更像蟒蛇。当我发布这个时,我没有看到你的答案。但我认为即使是非Python程序员也很容易理解。谢谢你的帮助嗨,是的,我承认你的方法很简单。当我发布这个时,我没有看到你的答案。但我认为即使是非python程序员也很容易理解。如果我想有3个场景,谢谢你的帮助:一个是用户和密码匹配的场景,第二个是用户名正确但密码不正确的,最后一个是用户名不存在的。@alladin编辑了我的。如果我想有3种情况:一种是用户和密码匹配的情况,第二个用户名正确但密码不正确,最后一个用户名不存在。@alladin编辑了我的。
user_password_dict = {user_obj['user']: user_obj['password'] for user_obj in a}
if user in user_password_dict and user_password_dict[user] == password:
    # do something here
else:
    # do something here