验证字典列表的内容

时间:2019-06-15 09:06:04

标签: python

我有一个字典l1的列表:

l1 = [
    {'name':'Omer','fname':'ghaffar','sid':1},
    {'name':'zoya','fname':'sattar','sid':2}
]

我正在尝试验证l1中是否存在某些内容。例如,我要检查namesid是否与输入值(a1a2)相同,那么它应该在显示“有效用户”的同时显示带有值。

我的代码:

a1 = input("name ")
a2 = input("sid ")
for e in l1:
    if e['name'] == a1 and e['sid'] == a2:
        print("valid user")
        break
    else:
        print("invalid user")

我通过上面的代码得到的结果是:

name Omer
sid 1
invalid user
invalid user

我希望结果是:

name Omer
sid 1
valid user

1 个答案:

答案 0 :(得分:2)

将您的条件更改为:

if e['name'] == a1 and e['sid'] == int(a2):

这是因为默认情况下,input读为字符串,因此当您将字符串与整数进行比较时,它始终是False

或者,您也可以在从用户那里读取内容时进行投射:

a2 = int(input("sid "))

还请注意,您的代码会继续打印'invalid user'来显示无效条目或列表后面的有效条目。为避免这种情况,您可以将else添加到for而不是if

a1 = input("name ")
a2 = input("sid ")

for e in l1:
    if e['name'] == a1 and e['sid'] == int(a2):
        print("valid user")
        break
else:
    print("invalid user")