这是我的词典和定义词典:
Vocab={'Precaution' : "a measure taken in advance to avert possible evil or to secure good results",
'Cautious' : "showing, using, or characterized by caution",
'Cautionary' : "of the nature of or containing a warning",
'Dissuade' : "to deter by advice or persuasion; persuade not to do something",
'Persuasion' : "the act of persuading or seeking to persuade"}
这是另一个字典,但是,这个字典包含拉丁词根作为键,词汇作为值。
Roots={'Caut' :{'Precaution', 'Catious', 'Cautionary'}, 'Saud' :{'Dissuade', 'Persuasion'}}
现在这是一个小型的问答游戏:
print "If you want to know the root of the word, type 'root'"
while 1:
y = random.choice(Vocab.keys())
print y
t2=raw_input("What is the definition?: ")
if t2 in Vocab[y]:
print 'All those words were in the definition!'
print Vocab[y]
elif t2 not in Vocab[y]:
if t2 == 'root':
print Roots
elif t2 != 'root':
for key,y in Roots.iteritems()):
print key
我希望用户输入' root',然后将根弹出作为提示。根弹出后,屏幕上会显示相同的问题词,供他尝试回答。当用户输入' root'时,整个字典出现。如何打印出该词所依据的词根?
答案 0 :(得分:2)
建议1:找到输入字在值中的键值对,然后打印键。
if t2 == 'root':
for root,words in Roots.iteritems():
if y in words:
print root
break
建议2:创建此词典
invRoots = {word:root for root,words in Roots.iteritems() for word in words}
并使用
if t2 == 'root':
print invRoots[y]
另一件事:您的Roots
包含拼写错误:'Catious'
答案 1 :(得分:1)
我不确定我理解你需要什么,但为什么不在一个数据结构中直接用主要词汇单词存储根?这样可以轻松打印当前单词的根目录,而无需任何反向词典或其他查找策略。
vocab = {
'Precaution' : {'root': 'Caut', 'def': 'definition': 'a measure ...'},
'Cautious' : {'root': 'Caut', 'def': 'showing, using, ...'},
'Dissuade' : {'root': 'Saud', 'def': 'to deter ...'},
}
如果您的问题需要在未来朝着这个方向发展,那么这种方法也与OO设计一致,其中每个Word
实例都包含其相关属性:定义,根,替代拼写等。< / p>
例如:
wroots = { w : r for r, ws in Roots.iteritems() for w in ws }
vocab = { w : dict(root = wroots[w], defin = d) for w, d in Vocab.iteritems() }