遍历字典并使用in 运算符查看每个短语是否在输入中。如果是,请使用index 方法找出位置,以便您可以按该索引对结果进行排序。然后你可以从最终结果中删除索引,这样你就只有 id 和值的元组。
>>> user_input = 'hello and good evening. how are you. im bored and need some entertainment. please tell me a joke.'
>>> data = {
... 3: 'hello',
... 24: 'tell me a joke',
... 34: 'im bored',
... 42: 'what time is it',
... 56: 'how are you',
... 69: 'what are you doing',
... }
>>>
>>> [(k, v) for _, k, v in sorted(
... (user_input.index(v), k, v)
... for k, v in data.items()
... if v in user_input
... )]
[(3, 'hello'), (56, 'how are you'), (34, 'im bored'), (24, 'tell me a joke')]
或者,由于您已经拥有告诉您每个 id 的字符串的数据库,您可以像这样计算 id 列表:
>>> [k for _, k in sorted(
... (user_input.index(v), k)
... for k, v in data.items()
... if v in user_input
... )]
[3, 56, 34, 24]
然后你当然可以拿这份清单做如下事情:
>>> " ".join(data[i] for i in [3, 56, 34, 24])
'hello how are you im bored tell me a joke'
等