假设我有以下字典:
mydict = {"3322": 4 , "3323": 3 , "3324": 5}
现在说,一旦用户输入 3,我想打印“3323”。到目前为止我得到了什么:
printer = input("please enter a number: ")
现在我不确定一旦用户输入 3,如何使用“打印机”打印 3323。
假设我有以下字典:
mydict = {"3322": 4 , "3323": 3 , "3324": 5}
现在说,一旦用户输入 3,我想打印“3323”。到目前为止我得到了什么:
printer = input("please enter a number: ")
现在我不确定一旦用户输入 3,如何使用“打印机”打印 3323。
由于您正在通过相应的值(可以在字典中重复多次)查找键(必须是唯一的),因此可能会有多个结果键映射到给定值。
幸运的是,我们可以使用列表推导找到所有键:
results = [k for k,v in mydict.items() if v == int(printer)]
当然,您可以像这样将它们全部打印出来:
print('\n'.join(results))
这样,所有找到的键都将被打印(用换行符分隔),如果没有找到,则不会打印任何内容。
首先,您的字典是“向后”的,即您要使用的键实际上存储了一个值,用字典理解将其翻转:
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!"
这样,如果用户搞砸了,他们可以再试一次..