2013-12-18 186 views
0

我坚持列表理解Python中Python列表理解

我有以下数据结构

dataset = [sentence1, sentence2,...] 
sentence = [word1, word2,...] 

另外,我有特殊的单词列表

special_words = [special_word1, special_word2, special_word3,...] 

我想运行special_words中的所有special_words并获取与special_words一起出现在句子中的所有words

至于结果,我想到,

data=[special_word1_list, special_word2_list, ...], 

,其中special_word1_list = [word1, word2, ...]

这意味着word1, word2 ,...是在句子连同special_word1_list

我试过很多差异的方式来构建列表理解,可惜没有任何成功。

我将不胜感激任何帮助,除此之外,如果你知道任何关于列表理解的好文章,请将它发布在这里。

+2

你能提供一个例子吗?这是有点不清楚,如果你是在句子后,有一个特殊的词,或者如果你是在一个特殊的句子中的话后......等等...... –

+1

很模糊的问题。请提供一个更清晰的例子。 –

+0

当你说_“'word1','word2',...和'special_word1_list'一起在句子中时,”_你是指_“'word1','word2',...和句子一起'special_word1'“_? – Eric

回答

3
data = [ 
    { 
     word 
     for sentence in sentences 
      if special_word in sentence 
       for word in sentence 
    } 
    for special_word in special_words 
] 
2

我想你想:

data = [sentence for sentence in data 
     if any(word in special_words 
       for word in sentence)] 
+0

一句话中的所有单词都应该在那里,你只会得到特别的。 –

0

另外,我建议建立一个字典映射特殊的话套在同一个句子中出现的为各自的特殊字,换句话说:

{sw : {w for ds in dataset if sw in ds for w in ds if w != sw} 
     for sw in special_words}