我有一个字典l1
的列表:
l1 = [
{'name':'Omer','fname':'ghaffar','sid':1},
{'name':'zoya','fname':'sattar','sid':2}
]
我正在尝试验证l1
中是否存在某些内容。例如,我要检查name
和sid
是否与输入值(a1
和a2
)相同,那么它应该在显示“有效用户”的同时显示带有值。
我的代码:
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
答案 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")