Python从其他字符串列表中计算列表中的子字符串数,不重复

erw*_*nlc 5 python string list

我有两个清单:

main_list = ['Smith', 'Smith', 'Roger', 'Roger-Smith', '42']
master_list = ['Smith', 'Roger']
Run Code Online (Sandbox Code Playgroud)

我想计算在main_list字符串中从master_list中找到字符串的次数,而不计算相同项目的两倍.

示例:对于上面的两个列表,我的函数的结果应该是4.'mith'可以在main_list中检索3次."罗杰可以被发现2次,但是'史密斯'已经在'罗杰 - 史密斯'中找到了,这个已经不再算了,所以'罗杰'只计算为1,总计4.

我写的知道功能如下,但我认为有更快的方法:

def string_detection(master_list, main_list):
    count = 0
    for substring in master_list:
        temp = list(main_list)
        for string in temp:
            if substring in string:
                main_list.remove(string)
                count+=1
    return count
Run Code Online (Sandbox Code Playgroud)

Pau*_*ney 9

一个班轮

>>>sum(any(m in L for m in master_list) for L in main_list)
4
Run Code Online (Sandbox Code Playgroud)

迭代main_list并检查该字符串中是否any有值master_list.这将为您提供一个bool值列表.它会在找到一个之后停止,因此每个字符串的计数只添加一个.方便地sum统计所有Trues以给你计数.