我的函数传递了一个字典(名称和分数)和名称。然后它比较名称以查看它是否在字典中,如果是,则打印名称和分数。
def display_marks_for(adict,name):
try:
for key in adict:
if name == key:
print(name,"=",adict[key])
except KeyError:
print(name,'not on list')
如果名称在字典中,我的代码会输出正确的内容,但如果名称不存在,则不会打印任何内容吗?
我希望它说名字不在名单上。
由于
答案 0 :(得分:1)
如果你正在迭代字典中的键,你将不会得到$sql = "SELECT * FROM phones where phoneserial = '{$esn}'";
,因为它们都将在那里。如果keyError
不匹配else
key
语句
name
或者,如果您确实想要使用def display_marks_for(adict,name):
if name in adict.keys():
print(name,"=",adict[name])
else:
print(name,'not on list')
例外,请不要遍历您的字典键:
KeyError
答案 1 :(得分:1)
您的代码可以简化为以下内容,因为您不需要遍历所有密钥(这是字典的全部内容 - 避免循环查找内容):
def display_marks_for(adict, name):
mark = adict.get(name)
if mark:
print('{}={}'.format(name, mark))
else:
print('{} is not in the dictionary'.format(name))
词典的get()
方法尝试查找给定键的值,如果它不存在 - 而不是引发KeyError,则返回None
。
如果你想练习捕捉KeyError
,你可以修改你的方法 - 再次注意你不需要循环:
def display_marks_for(adict, name):
try:
mark = adict[name]
print('{}={}'.format(name, mark))
except KeyError:
print('{} is not in the dictionary'.format(name))