在列表上运行for循环并将结果保存在数据框中

2024-06-25 23:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为for循环列表中的每个元素运行一个数据框,其中第一列是list中的I,后面是wordnet中的元素。你知道吗

主动语音 不错不错不错

synonyms = []
list = ["active", "decent"] 

for i in list:
 for syn in wordnet.synsets(i):
    for l in syn.lemmas():
        synonyms.append(i)   
        synonyms.append(l.name())

我收到的不是一个列表,其中第一个元素“active”在循环中运行了两次。你知道吗


Tags: 数据in元素列表for语音wordnetlist
1条回答
网友
1楼 · 发布于 2024-06-25 23:27:07

您的代码基本上是正确的,但是在构建同义词列表时,同义词列表中有许多重复项。我在下面对其进行了修改,以建立一个要放入数据帧的对列表。你知道吗

import nltk
wordnet = nltk.wordnet.wordnet

# Words to lookup.
words = ["active", "decent"]

# Build a list of pairs, word:synonym
synonyms = []
for i in words: 
    for syn in wordnet.synsets(i): 
         for l in syn.lemmas():
             synonyms.append((i, l.name())) 

df = pd.DataFrame(sorted(synonyms), columns=('word', 'synonym'))
df.drop_duplicates()

产生

0   active         active
17  active   active_agent
18  active   active_voice
19  active          alive
20  active   combat-ready
21  active        dynamic
22  active       fighting
23  active  participating
24  decent       adequate
25  decent       becoming
26  decent         comely
27  decent  comme_il_faut
28  decent         decent
35  decent       decently
36  decent       decorous
37  decent         enough
38  decent  in_good_order
39  decent           nice
40  decent       properly
41  decent          right
42  decent         seemly
43  decent  the_right_way

相反,您可以通过构建集合来提前消除重复项

synonyms = {}
for i in words:
   entries = set()
   for syn in wordnet.synsets(i):
       for l in syn.lemmas():
           entries.add(l.name())
   synonyms[i] = entries

pairs = ((k,v) for k,entries in sorted(synonyms.items()) 
         for v in sorted(entries))
df = pd.DataFrame(pairs, columns=('name', 'synonym'))
df

产生

      name        synonym
0   active         active
1   active   active_agent
2   active   active_voice
3   active          alive
4   active   combat-ready
5   active        dynamic
6   active       fighting
7   active  participating
8   decent       adequate
9   decent       becoming
10  decent         comely
11  decent  comme_il_faut
12  decent         decent
13  decent       decently
14  decent       decorous
15  decent         enough
16  decent  in_good_order
17  decent           nice
18  decent       properly
19  decent          right
20  decent         seemly
21  decent  the_right_way

相关问题 更多 >