【问题标题】:How to call a name from a dictionary in Python 3?如何在 Python 3 中从字典中调用名称?
【发布时间】:2013-10-23 22:48:32
【问题描述】:

假设我有以下字典:

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

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

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

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

【问题讨论】:

  • 您想查找匹配值的键。如果有多个具有相同匹配值的键会发生什么?如果没有会发生什么?

标签: python python-3.x dictionary call


【解决方案1】:

由于您正在通过相应的(可以在一个字典,)可能有多个结果键映射到给定值。

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

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

当然你也可以像这样打印出来:

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

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

【讨论】:

    【解决方案2】:

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

    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!"
    

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

    【讨论】:

    • 这对于 Python 2 是正确的。您必须进行一些小改动才能使其在 Python 3 上运行。此外,这假定没有重复值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2013-05-12
    • 2017-11-15
    相关资源
    最近更新 更多