我有一个名为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
答案 0 :(得分:2)
不要建立一个列表,因为这是你得到内存错误的原因(你甚至创建了两个列表,因为那是.keys()
所做的)。您可以迭代iterator
(这是他们的目的):
for a, b in itertools.combinations(lemma_all_context_dict, 2):
print a, b