我想检查名词中的任何元素是否与表格中的任何一个元素匹配。
“设备”中的第一个元素。显然它与“projname:dataset.devices”匹配。如果找到匹配, 循环应该中断,否则它应该检查名词中的第二个元素,即“今天”是否匹配表中的任何元素。
tables = ["projname:dataset.devices","projname:dataset.attempts"]
noun = [devices,today]
我用“表中的名词”试了一下,结果是空的。我还可以尝试其他方法吗?
提前致谢!!
答案 0 :(得分:3)
any(n in s for n in nouns for s in tables)
的简单使用就足以进行检查。
如果你真的想要匹配的项目,你可以编写这个快速功能:
>>> def first_match(nouns, tables):
... for n in nouns:
... for t in tables:
... if n in t:
... return t
...
>>> first_match(nouns,tables)
'projname:dataset.devices'
答案 1 :(得分:1)
<强>任务:强>
数据:强>
tables = ["projname:dataset.devices","projname:dataset.attempts"]
noun = ['devices','today']
生成器表达:
这仅根据OP请求给出第一个匹配。
try:
print(next(t for n in noun for t in tables if n in t))
except StopIteration:
pass
<强>输出:强>
'projname:dataset.devices'
答案 2 :(得分:0)
请注意,在您的代码中,当您说noun in tables
时,它意味着另一个列表(表)的列表(名词)INSIDE。这不是我们想要找到的,而是你想找到存在于表格的一个元素内的每个名词。请尝试以下方法:
tables = ["projname:dataset.devices","projname:dataset.attempts"]
nouns = ["devices","today"]
for noun in nouns:
for table in tables:
if noun in table:
print "Found", noun
break
答案 3 :(得分:0)
这个简单的解决方案怎么样:
>>> tables = ["projname:dataset.devices","projname:dataset.attempts"]
>>> noun = ['devices','today']
>>> for x in noun:
if any(x in s for s in tables):
print('Found !')
break
Found !
答案 4 :(得分:0)
根据你的评论我假设列表中的元素不是字符串,我不知道如何在python上获取var名称,所以这是我的解决方案
tables = ["projname:dataset.devices","projname:dataset.attempts"]
noun = {"devices": devices, "today": today}
for n in noun:
for table in tables:
if n in table:
break