Python:迭代字典时出现的问题
因此,我一直在编写这个简单的Python程序,以熟悉字典。基本上,它是一个数据库,你可以在里面搜索。如果您的条目位于dictionary键中,则会显示有关该条目的信息Python:迭代字典时出现的问题,python,python-3.x,Python,Python 3.x,因此,我一直在编写这个简单的Python程序,以熟悉字典。基本上,它是一个数据库,你可以在里面搜索。如果您的条目位于dictionary键中,则会显示有关该条目的信息 Family = {'Jim' : ['cool guy', 'has facial hair'], 'Ned' : ['hot stuff', ' wears Tees']} query = input("Look up database on whom? > ") for (name, info)
Family = {'Jim' : ['cool guy', 'has facial hair'],
'Ned' : ['hot stuff', ' wears Tees']}
query = input("Look up database on whom? > ")
for (name, info) in Family.items():
if name in query or name.lower() in query:
print("{} is {}".format(name, info))
这是有效的。然而,当我试图添加一个ELSE子句来处理不存在的条目时,我得到了这个结果
else:
print ('Value not found!')
它打印未找到的值!在提出价值之前,已经有很多次了。如果我尝试添加“返回开始”函数,它甚至不会显示注册值。我知道这是因为它是一个循环,一个接一个地迭代dict;吉姆是真的,内德是假的
如何改进此代码以使其正确:-能够给出关于不存在的条目的错误,然后重新启动程序。谢谢。您需要注意代码中的大小写不敏感。在继续之前,遍历列表以确保名称存在:
Family = {'Jim' : ['cool guy', 'has facial hair'],
'Ned' : ['hot stuff', ' wears Tees']}
names = [name.lower() for name in Family]
def find(query):
if query.lower() in names:
info = [Family[n] for n in Family if n.lower() == query.lower()]
print('{} is {}'.format(
query, info
))
else:
print('{} not found'.format(query))
如果您尝试使用以下示例:
find('Ned')
find('ned')
find('no ned')
您将获得以下结果:
Ned is [['hot stuff', ' wears Tees']]
ned is [['hot stuff', ' wears Tees']]
no ned not found
这是一种方法:
Family = {'Jim' : ['cool guy', 'has facial hair'],
'Ned' : ['hot stuff', ' wears Tees']}
query = input("Look up database on whom? > ")
if query in Family.keys():
for (name, info) in Family.items():
if name in query or name.lower() in query:
print("{} is {}".format(name, info))
else:
print "Print Something - Not in Family"
您的else缩进是否与的
或
的相同?看起来它是
的。不,它与缩进。如果
谢谢,我发现这个答案最容易理解。我刚刚将if query in Family.keys():
更改为if query.capitalize()in Family.keys():
以允许小写的entries太好了,我很乐意提供帮助!