我有一个名为clients_list的列表,其中包含以下字典:
clients_list =
[
{'John Guy': [28, '03171992', 'Student']},
{'Bobby Jones': [22, '02181982', 'Student']},
{'Claire Eubanks': [18, '06291998', 'Student']},
]
如何使用输入的答案检查是否有人在此列表中?我试过了代码
elif answer in clients_list:
print(f'{answer} is in our database.')
但它似乎无法正常工作。
答案 0 :(得分:2)
试试这个
clients_list = [{'John Guy': [28, '03171992', 'Student']},
{'Bobby Jones': [22, '02181982', 'Student']},
{'Claire Eubanks': [18, '06291998', 'Student']}]
c= 'John Guy'
for item in clients_list:
if c in item:
print c + 'is in our database.'
break
答案 1 :(得分:1)
假设answer
包含"John Guy"
。然后,此测试if answer in clients_list
会询问字符串"John Guy"
是否在字典列表中,当然它不是,因为clients_list
是字典列表,而不是字符串。现在你明白为什么你的测试没有达到你期望的效果吗?
这证明了juanpa.arrivilaga的观点,即数据结构与您正在使用的数据结构并不完全匹配。如果要对名称进行查找,则这些名称应为字典键。像
这样的东西clients_list = {
'John Guy': [28, '03171992', 'Student'],
'Bobby Jones': [22, '02181982', 'Student'],
'Claire Eubanks': [18, '06291998', 'Student'],
}
您也可以考虑将字典值命名为tuples而不是列表。
答案 2 :(得分:0)
如果您想匹配按键,可以使用set().union
:
clients_list = [{'John Guy': [28, '03171992', 'Student']},
{'Bobby Jones': [22, '02181982', 'Student']},
{'Claire Eubanks': [18, '06291998', 'Student']}]
x = input('Enter a name:')
if x in set().union(*clients_list):
print('Name found')
else:
print('Name not found')
答案 3 :(得分:0)
列表元素之间的逗号。
clients_list =[{'John Guy': [28, '03171992', 'Student']},
{'Bobby Jones': [22, '02181982', 'Student']},
{'Claire Eubanks': [18, '06291998', 'Student']}]
至于问题,这应该有用
for d in clients_list:
for person in d.items():
if "John Guy" in person[0]:
print (person[1])
print (person[0]+" is in our database")
答案 4 :(得分:0)
您可以尝试使用zip
功能:
clients_list = [{'John Guy': [28, '03171992', 'Student']}, {'Bobby Jones': [22, '02181982', 'Student']}, {'Claire Eubanks': [18, '06291998', 'Student']}]
name = "John Guy"
if name in list(zip(*clients_list))[0]:
print(name + " is in database.")
输出:
John Guy is in database.
list(zip(*clients_list))
将返回一个包含元组的列表,其名称如下:
[('John Guy', 'Bobby Jones', 'Claire Eubanks')]
然后,您所做的就是使用[0]
获取列表中的那个元组,并检查该元组是否存在您输入的名称。
或者,您可以解压缩单个名称元组:
names, = list(zip(*clients_list))
并用它来检查你的名字是否在那里:
if name in names:
print(name + " is in database.")
答案 5 :(得分:0)
clients_list = [
{'John Guy': [28, '03171992', 'Student']},
{'Bobby Jones': [22, '02181982', 'Student']},
{'Claire Eubanks': [18, '06291998', 'Student']}]
def get_name(answer):
data = ("No Data Present in DB.",{'Error':'Not Found'})
for index, val in enumerate(clients_list):
if answer in val.keys():
data = (f'{answer} present in database & found at {index}', clients_list[index])
return data
asnwer = input("Enter a Name")
found, value = get_name(asnwer)
print(found, value)
>>>Bobby Jones present in database & found at 1 {'Bobby Jones': [22, '02181982', 'Student']}