如何将字符串列表与另一个匹配

时间:2020-10-05 14:18:58

标签: python python-3.x string list match

我有2个字符串列表:

['Tipo de fertilizante',
 'N',
 'P2O5',
 'K2O',
 'S',
 'CaO',
 'MgO',
 'Zn',
 'Solubilidad g/100cc H2O',
 'Precio (€/100 kg)',
 '€/UF (N)',
 '€/UF (P2O5)',
 '€/UF (K2O)',
 '€/UF (S)',
 '€/UF (CaO)',
 '€/UF (MgO)',
 'JERARQUIA - (N)',
 'JERARQUIA - (P2O5)',
 'JERARQUIA - (K2O)',
 'JERARQUIA - (S)',
 'JERARQUIA - (CaO)',
 'JERARQUIA - (MgO)',
 'Abono']

这是第二个:

['JERARQUIA - (N)',
 'JERARQUIA - (P2O5)',
 'JERARQUIA - (K2O)',
 'JERARQUIA - (S)',
 'JERARQUIA - (CaO)',
 'JERARQUIA - (MgO)']

我想获取包含在第二个元素中的第一个元素,所以期望的结果将是:

['N',
 'P2O5',
 'K2O',
 'S',
 'CaO',
 'MgO', 
 'JERARQUIA - (N)',
 'JERARQUIA - (P2O5)',
 'JERARQUIA - (K2O)',
 'JERARQUIA - (S)',
 'JERARQUIA - (CaO)',
 'JERARQUIA - (MgO)',]

我已经研究了this的答案,这就是我所尝试的:

[s for s in list_1 if any(i in s for i in list_2)]

但是我得到的结果是:

['JERARQUIA - (N)',
 'JERARQUIA - (P2O5)',
 'JERARQUIA - (K2O)',
 'JERARQUIA - (S)',
 'JERARQUIA - (CaO)',
 'JERARQUIA - (MgO)']

这不是我想要的。经过很多次反复讨论之后,我仍然不知道如何获得所需的结果。

我该怎么做?

非常感谢您。

2 个答案:

答案 0 :(得分:4)

尝试以下方法:

[s for s in list_1 if any(s in i for i in list_2)]

(说明:在您的示例中,我们检查的是i中的s而不是i中的i,这会导致结果有所不同)

答案 1 :(得分:1)

您可以通过嵌套for循环来实现。 它将使程序有点冗长,但是可以确保您可以运行该程序。

list_3 = []
for i in list_1:
    for j in list_2:
        if i == j:
            list_3.append(i)

请尝试这种方式。

相关问题