假设我有一本字典,其中键是一个类别名称,值是该类别中的单词。例如:
words={
'seasons':('summer','spring','autumn','winter'),
'rooms':('kitchen','loo','livingroom','hall','diningroom','bedroom'),
'insects':('bee','butterfly','beetle')}
对于任何给定的输入,我想创建一个包含两项的列表,其中第一项是值字,第二项是关键字。例如,预期输出应为:
input: kitchen
output: ['kitchen','rooms']
input: bee
output: ['bee','insects']
我检查了问题Get key by value in dictionary,但所有答案都适用于每个键有1个值的词典
我尝试了以下简单的封闭式代码:
word=input('Enter a word: ')
word_pair=[]
word_pair.append(word)
if word in (words['seasons']):
index=0
elif word in (words['rooms']):
index=1
elif word in (words['insects']):
index=2
else:
index=3
try:
key_val=list(words.keys())[index]
word_pair.append(key_val)
except IndexError:
word_pair.append('NA')
print(word_pair)
显然,这段代码只适用于这个特定的字典。如果我想添加一个类别,我必须添加一个elif子句。如果我想更改一个类别的名称或它们的顺序,删除一个,合并两个或更多,等等,我必须手工调整一大堆东西
有没有更通用的方法来实现这一点
感谢所有的帮助
您可以将generator与解包一起使用:
最好将^{} 与生成器一起使用,因为它将在找到第一个匹配项后停止:
您可以这样做:
解释:
words.items()
为字典中的每个键返回一个元组(键、值)。在本例中,值是一个列表。因此,我们可以使用in
操作符来查找word
是否在该列表中。如果是,只需返回钥匙即可您可以使用以下命令反转该命令:
然后在倒排的dict中查找您的输入
相关问题 更多 >
编程相关推荐