在lis中寻找所有可能对的高效且不消耗内存的方法

2024-05-14 05:51:15 发布

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

我有一个名为lemma_all_context_dict的字典,它有大约8000个键。我需要一份所有可能的钥匙对的清单。你知道吗

我用过:

pairs_of_words_list = list(itertools.combinations(lemma_all_context_dict.keys(), 2)) 

然而,当使用这一行时,我得到一个MemoryError。我有8GB的RAM,但可能我还是得到了这个错误,因为我在这段代码中有一些非常大的字典。你知道吗

所以我尝试了另一种方法:

pairs_of_words_list = []
for p_one in range(len(lemma_all_context_dict.keys())):
        for p_two in range(p_one+1,len(lemma_all_context_dict.keys())):
                pairs_of_words_list.append([lemma_all_context_dict.keys()[p_one],lemma_all_context_dict.keys()[p_two]])

但这段代码运行大约需要20分钟。。。有人知道解决这个问题的更有效的方法吗?谢谢

**我不认为这个问题是重复的,因为我要问的是-我不认为有人问过-如何实现这些东西而不让我的电脑崩溃:-p


Tags: of方法infor字典contextrangekeys
1条回答
网友
1楼 · 发布于 2024-05-14 05:51:15

你知道吗 不要建立一个列表,因为这是你得到一个内存错误的原因(你甚至创建了两个列表,因为这就是.keys()所做的)。您可以迭代iterator(这就是它们的目的):

for a, b in itertools.combinations(lemma_all_context_dict, 2):
    print a, b

相关问题 更多 >