【问题标题】:Partial String match between two lists in pythonpython中两个列表之间的部分字符串匹配
【发布时间】:2017-05-11 06:36:27
【问题描述】:

我有两个列表,其中一个包含另一个列表的子字符串。我想从列表 B 中提取所有在列表 A 中具有匹配子字符串的行。

例如, 列表 A:

Sally Hope
Bob John
Seth Whale

列表 B

[('Sally Hope does not like chocolate', 14)
('Sally Hope is great', 45)
('Seth Whale likes swimming', 43)
('Marley does not like walks', 56)
('John goes on walks', 55)]

输出:

[('Sally Hope does not like chocolate', 14)
('Sally Hope is great', 45)
('Seth Whale likes swimming', 43)]

我已经在 R 中使用 amatch 和 dpylr 过滤器进行了尝试,但没有得到所需的输出,并且 R 在内存上失败了(列表 B 有大约 2m 行)。在 python 中执行此操作的最有效方法是什么?

【问题讨论】:

    标签: python string substring


    【解决方案1】:

    Python 有list comprehension

    output = [j for i in list_a for j in list_b if i in j[0]]
    

    结果

    [('Sally Hope does not like chocolate', 14),
     ('Sally Hope is great', 45),
     ('Seth Whale likes swimming', 43)]
    

    【讨论】:

    • list_b 是一个元组列表,我能够以 list_b[ ][ ] 的形式访问各个元素,但不能在循环中。更新的问题!
    • 然后使用output = [(b,n) for a in A for b,n in B if a in b]
    • @lilipunk 试试这个:output = [j for i in list_a for j in list_b if i in j[0]]
    • @mtilhan 谢谢。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2020-11-28
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多