0

假设我有以下字典:

mydict = {"3322": 4 , "3323": 3 , "3324": 5}

现在说,一旦用户输入 3,我想打印“3323”。到目前为止我得到了什么:

printer = input("please enter a number: ")

现在我不确定一旦用户输入 3,如何使用“打印机”打印 3323。

4

2 回答 2

1

由于您正在通过相应的(可以在字典中重复多次)查找(必须是唯一的),因此可能会有多个结果键映射到给定值。

幸运的是,我们可以使用列表推导找到所有键:

results = [k for k,v in mydict.items() if v == int(printer)]

当然,您可以像这样将它们全部打印出来:

print('\n'.join(results))

这样,所有找到的键都将被打印(用换行符分隔),如果没有找到,则不会打印任何内容。

于 2013-10-23T22:58:45.117 回答
0

首先,您的字典是“向后”的,即您要使用的键实际上存储了一个值,用字典理解将其翻转:

mydict = {v:k for (k,v) in mydict.iteritems()}

那么最好在 while 循环中捕获用户输入:

while 1:
    key = input("please enter a number: ")
    try:
        if int(key) in mydict:
            print mydict[int(key)]
            break
        else:
            print "{n} not present!".format(n = key)
    except ValueError:
        print "please enter a number!"

这样,如果用户搞砸了,他们可以再试一次..

于 2013-10-23T22:53:09.227 回答