【发布时间】:2019-07-07 00:51:51
【问题描述】:
我有一个键和值字典(为了便于阅读,大量截断):
responsePolarities = {'yes':0.95, 'hell yes':0.99, 'no':-0.95, 'hell no':-0.99, 'okay':0.70}
我正在检查是否有任何键在传递给我的函数的字符串中:
for key, value in responsePolarities.items():
if key in string:
return value
问题是,如果在传递的字符串中包含诸如“know”之类的单词,则该函数会在“know”中看到“no”并返回-0.95。
我不能在“否”键周围添加空格,因为它可能是提供的唯一响应。
如何使函数将“不”视为“不”而不是“知道”?我是否正确地认为这可能需要成为 RegExp 工作,还是我缺少更简单的东西?
我曾考虑将传递的字符串拆分为单个单词,但后来我无法检查修改响应极性的多词短语(例如 no vs. hell no)...
【问题讨论】:
-
那么,您希望键是“否”还是其中包含“否”? “不知道”好吗?
-
@Akaisteph7 不太理解你的问题。如果我将字符串“我不知道”传递给函数,则 responsePolarity 返回为 -0.95,因为它与“知道”中的“否”匹配。我不想要那个。我只希望它匹配“no”,如果“no”这个词是单独存在的,而不是像 know、snow、north、snore 等更大的词中的一对巧合字母。
-
那么“不知道”可以吗?或者,如果您愿意,可以选择“不”。
-
@Akaisteph7 不...“不知道”不好。如果被检查的字符串是“不知道”,它应该为独立的“不”返回 -0.95。但是如果被检查的字符串是“知道是”,它应该返回一个 0.95 来表示是,并且永远不会将“知道”中的“否”视为要检查的有效项目。
-
你所说的似乎是矛盾的。为什么不为您的问题中的几个案例添加一个预期输入和输出的示例。
标签: python string dictionary comparison string-comparison