所以我的字典有一个代码:
def get_rooms_for(dict1, num):
try:
for x in dict1:
if x == num:
print(dict1[x])
except KeyError:
print (num,"is not available.")
我的测试是
get_rooms_for({'CS101':3004, 'CS102':4501, 'CS103':6755,'NT110':1244, 'CM241':1411}, 'CS999')
我希望我的结果是用字符串
打印出'num'参数CS999 is not available.
但是当我把它放进去时它会返回空的 如果我想在字典中选择KeyError,使用异常代码??
,我该怎么办?答案 0 :(得分:2)
当您输入try
循环时,您将循环遍历字典中的所有键。 CS999
不是字典中的键,因此您永远不会尝试访问它。因此,您永远不会遇到KeyError
,并且永远不会达到except
子句。
你想要做的更像是这样:
def get_rooms_for(dict1, num):
if num in dict1:
print(dict1[num])
else:
print("{} is not available".format(num))
但是Python已经有了一个方法:get
dict1.get(num, "{} is not available".format(num))
如果它在字典中,则返回映射到num
的值,如果不是,则返回"{} is not available".format(num)
。
答案 1 :(得分:0)
试试这个:
def get_rooms_for(dict1, num):
try:
for x in dict1:
if dict1[num] == x:
print "It will print particular key's {0} value if its exists or It will generate keyerror".format(dict1[num])
print(dict1[x])
except KeyError:
print (num,"is not available.")
输出:
('CS999', 'is not available.')
答案 2 :(得分:0)
试试这个:
def get_rooms_for(dict1, num):
try:
print(dict1[num])
except KeyError:
print (num,"is not available.")
答案 3 :(得分:-2)
您也可以在没有try
和exception
的情况下尝试:
def get_rooms_for(dict1, num):
if dict1.has_key(str(num)): # or str(num) in dict1
print "Key available"
else:
print num,"is not available."
get_rooms_for({'CS101':3004, 'CS102':4501, 'CS103':6755,'NT110':1244, 'CM241':1411}, 'CS999')
输出:
CS999 is not available.