2015-10-19 151 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

相關問題