在for循环中创建多个列表

时间:2019-07-17 13:49:45

标签: python list for-loop

我从熊猫数据框中读取了信息。 “关键字”列可以但不必包含逗号分隔的关键字,以后我要在文本中搜索这些关键字。如果我只有一个关键字列表,可以对其进行迭代然后在文本中进行查找,则这一部分很容易。但是,我需要为每一行提供一个列表。我该怎么办?

输入是以下数据框(df):

Search  keywords
 1      Smurf, gummybear, Echo
 2      Blue, yellow, red
 3      Apple, Orange, Pear

l_search = df['search'].tolist()
l_kw = df['keywords'].tolist()

现在,我有了一个关键字列表列表。我想将其分为我搜索到的尽可能多的列表,基本上是:

i = 1
for s in l_search:
   l_kw_i = [] # here the list would be l_kw_1, then l_kw_2, ...
   l_kw_i.append(s)
   i = i+1
# l_kw_1 would be now "Smurf, gummybear, Echo".

在那之后,我想用逗号分割每个列表,因此l_kw_1现在将包含“ Smurf”,“ gummybear”,“ Echo”。然后,我将遍历每次搜索的结果以及相应的列表,以确定是否出现至少一个关键字。

主要问题是根据搜索数量创建可变数量的关键字列表。

1 个答案:

答案 0 :(得分:0)

诀窍是使用词典。您可以结合使用字典理解和列表理解来在一行中做到这一点:

df = pd.DataFrame({'Search':[1,2,3], 
                   'keywords' : ["Smurf, gummybear, Echo", "Blue, yellow, red", "Apple, Orange, Pear"] })

l_kw = {i:[y for y in x['keywords'].split(',')] for i, x in df.iterrows()}

输出:

{0: ['Smurf', ' gummybear', ' Echo'],
 1: ['Blue', ' yellow', ' red'],
 2: ['Apple', ' Orange', ' Pear']}