当我在Python中使用KeyError时,如何打印出某些内容?

时间:2018-01-19 05:34:39

标签: python string dictionary exception keyerror

所以我的字典有一个代码:

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,使用异常代码??

,我该怎么办?

4 个答案:

答案 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)

您也可以在没有tryexception的情况下尝试:

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.