如何比较dictionary中的list的值

问题遇到的现象和发生背景

现在需要def一个function: auth_user(username,password,user_dict),user_dict可以理解为一个用户信息的dictionnary合集,{用户1:[“用户名”,“密码”,“邮箱”,“邮编”],用户2:[“用户名”,“密码”,“邮箱”,“邮编”]},现在需要核对同一个用户的用户名和密码是否一致,比如user_dict ={Tom:["aa", "123","13412@.com", 232e1], Jack: ["bbc", "11233","2433412@.com", 23231]},现在需要验证输入的用户名“aa”和密码“123”是否匹配,如果匹配返回true否则返回false.

问题相关代码,请勿粘贴截图

def auth_user(username,password,user_dict)

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

The username=”a”
password=”12333”,
user_dict={“12345”: [“a”, 12333, “aa@gmail.com”, “3151”],
“34567”: [“b”,12444, “bb@gmail.com”, “3000”]},
print(auth_user(username,password,user_dict))
The result will be True.

If the username=”b”, password=”12333”, the result will be False.

这个问题很简单啊,当有个数据需要比对是,遍历下你的dictionary,逐个进行比较检查就可以了!谢谢,望采纳!


def auth_user(username,password,user_dict):
    for item in list(user_dict.values()):
        if username == item[0] and password == item[1]:
            return True
    else:
        return False


user_dict={"12345": ["a", "12333", "aa@gmail.com", "3151"],
"34567": ["b","12444", "bb@gmail.com", "3000"],
"555": ["c", "111", "bb@gmail.com", "3000"]}
username="a"
password="12333"
print(auth_user(username,password,user_dict))


def auth_user(username, password, user_dict):
    for user in user_dict:
        if username == user_dict[user][0] and password ==user_dict[user][1]:
            return True
    return False
username="aa"
password="123"
user_dict = {'Tom': ["aa", "123", "13412@.com", 232e1],
             'Jack': ["bbc", "11233", "2433412@.com", 23231]}
print(auth_user(username=username,password=password, user_dict=user_dict))

你的 user_dict 以 name (问题中的'Tom')为键,而检索的信息却是 account (问题中的'aa'),无论怎么做效率都不会高。建议 user_dict 以 account 为键,无需遍历即可取得信息。

用json。很方便

你这么搞感觉好乱,没有人那么做用户字典吧,至少我是头一次见。
一般我们的做法是

user_list = [
    {"user_name":"xxxxx","password":"xxxxxx","email":"xxxxx","data":"xxxxx"},
    {"user_name":"xxxxx","password":"xxxxxx","email":"xxxxx","data":"xxxxx"},
]

这样遍历的时候直接通过字典的操作就可以了,而且检索起来比较方便。
如果非要是你着方法参考下面这个吧。

def auth_user(username, password, user_dict):
    for user in user_dict:
        if username == user_dict[user][0] and password ==user_dict[user][1]:
            return True
    return False
username="aa"
password="123"
user_dict = {'Tom': ["aa", "123", "13412@.com", 232e1],
             'Jack': ["bbc", "11233", "2433412@.com", 23231]}
print(auth_user(username,password, user_dict))