同一变量中包含 1 个以上单词的条件语句

Conditional statements with more than 1 word in the same variable

我正在尝试根据来自另一个变量的各种业务规则创建一个变量。请看下面的例子。当我只处理一个需要用作条件的词时,我使用以下代码:

  physical = ['light', 'sedentary', 'medium', 'heavy']

  def matcher(x):
      for i in physical:
          if i.lower() in x.lower():
             return i
          else:
             return 'other'

我的问题是当句子中有多个单词匹配时,在这种特定情况下我想调用 mix。例如,如果一个句子中有多个单词出现在第一句中,则 'mix'

  Physical Demand                                          Result
    Light to medium with occasional heavy  levels           mix                        
    Light lifting                                           light
    Medium effort required when lifting                     medium

谢谢。

如果您之前看到过另一个值而不是返回看到的第一个值,您将想要跟踪

例如

 def matcher(x):
    val = None
    for p in physical:
        for y in x.split():  # assuming x is a string 
            if p == y.lower():  # physical elements are already lowercase 
                if val is not None: 
                    # val already has a value, so you have more than one physical element in x 
                    return 'mix' 
                val = p
        return val if val else 'other'

您需要检查所有项目到 return mix 而不是只检查一项后直接 return 。接下来是一个可行的代码,仅供参考。

physical = ['light', 'sedentary', 'medium', 'heavy']

def matcher(x):
    l = [item for item in physical if item.lower() in x.lower()]
    length = len(l)

    if length == 0:
        return 'other'
    elif length == 1:
        return l[0]
    else:
        return 'mix'

print(matcher('Light to medium with occasional heavy  levels'))
print(matcher('Light'))
print(matcher('Medium'))
print(matcher('abcde'))

输出:

mix
light
medium
other