2015-10-19 128 views
-2

我有一个列表:寻找一个列表的内容,在另一个列表

alist=[['able'], ['acre'], ['bale'], ['beyond'], ['binary'], ['boat'], ['brainy'], ['care'], ['cat'], ['cater'], ['crate'], ['lawn'], ['list'], ['race'], ['react'], ['sheet'], ['silt'], ['slit'], ['trace'], ['interject'], ['contradict'], ['oration'], ['understandable']] 

另一份:

blist=['co', 'de', 'dis', 'inter', 'non', 'not', 'post', 'pre', 're', 'sub', 'trans'] 

现在的问题是,我想检查的内容乙列表匹配任何内容的在列表,换句话说,如果列表具有任何在乙列表中向下列出的前缀

最终它应该给我一个结果,如“共同”出现一次在列表中,“间”出现一次在列表等

编辑,这里是我试过,但没有工作守则,有人能告诉我它有什么问题吗?

for word in alist: 
    if blist in word: 
     print word 
+0

*现在我的问题是,我要检查在B名单中的内容相匹配列表中的任何内容,换句话说,如果一个列表中有任何列出的前缀在B列表* - 这不是一个问题 –

+2

你已经尝试过任何不工作? –

+1

你可以显示你目前正在使用的代码? –

回答

1

似乎没有理由将您的字符串置于嵌套列表中。因此,这里是我会做什么:

import collections 
import itertools 

alist = [s for sub in alist for s in sub] 
counts = collections.defaultdict(int) 
for s, a in itertools.product(blist, alist): 
    if a.startswith(s): 
     counts[s] += 1 
+0

因为OP提到*前缀*,可能会改变:'if s == a [:len(s)]'? –

+0

看来我只能得到一个字(反式)。 – Gekko

相关问题