对于raw_input语句,我必须打印出每个单词,并且它是来自词典的类型:
wordDict = {
"directions": ['north', 'south', 'east', 'west', 'down', 'up', 'left', 'right'],
"verbs": ['go', 'stop', 'eat', 'kill'],
"stop_words": ['the', 'in', 'of', 'from', 'at', 'it'],
"nouns": ['door', 'bear', 'princess', 'cabinet'],
"numbers": range(10)
}
stuff = raw_input("Write sentence here > ")
words = stuff.split()
for wds in words:
print (wordDict[wrd]), wrd
因此,如果有人输入“north go the bear 5”,我会收到输出:
方向:北方,动词:go,stop_words:the,nouns:bear,numbers:5
这是关于学习Python困难之路(练习48)的教程。
对于每个单词,我如何打印出它的类型和值?
答案 0 :(得分:2)
而不是使用你的wordDict,因为你的键是你的搜索字典中的值,如果你事先转换你的字典,你将是一个优势。
这将使您的查找代码不那么复杂和可读。
另外,重要的是要注意,你的单词会是独一无二的,因为单个单词不能分为多个类别,因此,你可以轻松地使用你的单词键和类别作为值。
>>> wordDict = {
"directions": ['north', 'south', 'east', 'west', 'down', 'up', 'left', 'right'],
"verbs": ['go', 'stop', 'eat', 'kill'],
"stop_words": ['the', 'in', 'of', 'from', 'at', 'it'],
"nouns": ['door', 'bear', 'princess', 'cabinet'],
"numbers": range(10)
}
>>> wordDict_transpose = {str(elem): key for key, value in wordDict.items()
for elem in value}
>>> for word in words.split():
print "{}: {}".format(wordDict_transpose.get(str(word), 'Unknown'), word)
directions: north
verbs: go
stop_words: the
nouns: bear
numbers: 5
答案 1 :(得分:1)
您可以通过迭代字典来获取单词的类型:
for word in words:
for key,values in wordDict.items():
if word in values:
print key,word
要使数字运作良好,您需要将这些数字转换为字符串:
"numbers": [str(n) for n in range(10)]
根据Raphaël的建议,另一种获取类型的方法:
def get_type(word):
for key,values in wordDict.items():
if word in values:
return key
for word in words:
print word, get_type(word)
在这种情况下,即使多个列表中存在相同的单词,它也会返回一种类型。它处理所有列表中缺少单词时的情况。在这种情况下打印None
。