寻找一个列表的内容,在另一个列表
问题描述:
我有一个列表:寻找一个列表的内容,在另一个列表
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
答
似乎没有理由将您的字符串置于嵌套列表中。因此,这里是我会做什么:
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
*现在我的问题是,我要检查在B名单中的内容相匹配列表中的任何内容,换句话说,如果一个列表中有任何列出的前缀在B列表* - 这不是一个问题 –
你已经尝试过任何不工作? –
你可以显示你目前正在使用的代码? –