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