import random
from words import word_dict
def get_word():
word = random.choice(list(word_dict.values()))
return word.upper()
所以我正在导入这个字典,并从中获得一个随机值,并将其保存在一个变量中。现在如果我想要得到那个随机值的键,我该怎么得到这个键呢?任何帮助吗?提前谢谢。
你可以这样做:
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]
然而,最聪明的方法是先获得一个随机密钥,然后根据随机密钥进行查找。
当您随机选择时,为什么不直接获得键和值呢?
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()
是为了避免创建包含字典中所有条目的临时列表(我怀疑该列表相当大)。