【发布时间】:2015-02-24 12:00:04
【问题描述】:
我有这本词典:
mydict = {'greet': ['Hello123','hi45'],
'say': 'thankyou789',
'slang': ['Bmyguest','Bmyfriend']}
我想根据部分匹配的用户输入获取密钥,例如:
如果用户输入'Brightback',我应该返回'slang',因为只有'slang' 包含以'B' 开头的条目。如果用户输入'Hello' 或'hi',我应该返回'greet'。
input="Brightback"
for key, value in mydict.iteritems():
if input.startswith(value):
print key
这给出了错误:
TypeError: startswith first arg must be str, unicode, or tuple, not list
【问题讨论】:
-
value是一个列表,因此您也需要对其进行迭代 -
如果你使用startswith(value),它不会仅仅因为两个单词都以B开头而返回true。input.startswith(value)的作用是检查
input是否以value开头.因此,如果您有Bandit作为输入,Bmyguest作为值,则返回 false。如果输入是BmyguestBandit,它将返回true,因为现在输入确实以(值)开头。 -
@Philipp 那是下一个问题(c: