【问题标题】:Get the get the key of a dictionary value that is saved inside a variable?获取保存在变量中的字典值的键?
【发布时间】:2021-01-19 15:27:03
【问题描述】:
import random
from words import word_dict

def get_word():
    word = random.choice(list(word_dict.values()))
    return word.upper()

所以我正在导入这本字典并从中获取一个随机值并将其保存在一个变量中。现在,如果我想获得相同随机值的密钥,我将如何获得密钥?有什么帮助吗?提前致谢。

【问题讨论】:

    标签: python python-3.x dictionary key


    【解决方案1】:

    你可以这样做:

    val = get_word()
    key = next(k for k, v in word_dict.items() if v.upper() == val)
    

    当然,不能保证您获得哪个键,因为多个键可能具有相同的值。如果你必须重复做这个反向查找,你最好建立一个合适的数据结构:

    rev = {v.upper(): k for k, v in word_dict.items()}
    
    key1 = rev[val1]
    key2 = rev[val2]
    

    然而,最聪明的做法是先获取随机密钥,然后根据随机密钥进行查找。

    【讨论】:

    • 那么,如果我将键存储在单词变量中而不是值中,并尝试提取该随机键的值。我该怎么做?
    【解决方案2】:

    当你随机选择时,为什么不直接获取密钥和值:

    import random
    from words import word_dict
    
    def get_word():
        key,word = random.sample(word_dict.items(),1)[0]
        return word.upper(),key
    

    请注意,我将 choice() 更改为 sample() 以避免创建包含字典中所有条目的临时列表(我怀疑它非常大)。

    【讨论】:

    • 感谢您的回复。我看到了您的代码,它给了我一些东西,并且对您的代码进行了一些修改,我能够解决我的问题。另一个问题是如何出现变量词总是选择字典中的最后一个元素。我应该使用其他数据类型而不是字典吗?请问有什么想法吗?
    • 我需要看看你的 word_dict 是如何构建的。您确定每个键的值都不同吗?
    • 是的,先生,价值观不同。我的字典看起来是这样的。 word_dict = {} word_dict["Fruit"] = "Apple" word_dict["Fruit"] = "Orange" word_dict["Food"] = "Cake" word_dict["Food"] = "Pasta" word_dict["Food"] = “比萨” word_dict[“饮料”] = “Mohito” word_dict[“饮料”] = “百事可乐” word_dict[“饮料”] = “可乐”。除了这些键之外,还有更多的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    相关资源
    最近更新 更多