0

程序获取一个单词列表(70)并制作一个字典。键是元组中的单词序列,其中最后一个字母是下一个字母的第一个字母;该值是以键的最后一个字母开头的剩余单词的列表。

例子:

words= ['boy', 'young', 'star', 'grate']

d1={('boy'):['young'], ('young'):['grate'], ('star'):[], ('grate'):[]}

d2={('boy', 'young'):['grate']}

d3={('boy', 'young', 'grate'):[]}

我递归地制作越来越长的这些单词链

d3=makedic(d2,d1)
d4=makedic(d3,d1)
d5=makedic(d4,d1)

ETC....

因为每个单词只能使用一次,。但是当我达到 d15 时,它最终会逐渐变细

len(d15)
741793
d16=makedic(d15,d)
Killed

我假设我的内存不足,我不能使用 db 因为键是元组,关于我如何继续前进的任何想法?

4

1 回答 1

1

节省一些内存的一种简单方法可能是将索引存储到单词而不是单词本身。例如,在句子“The quick brown fox jumped over the lazy dog”中,您可以将 ("jumped", "dog") 表示为 (5, 9),因为它们是字符串中的第 5 个和第 9 个单词。

更一般地说,我想知道您是否真的需要超越两个词的情况,因为每个三个词的组合都必须作为两个两个词的组合存在,对吗?您可能不需要存储这些较大的组合,只需根据需要生成它们。

于 2013-10-20T00:52:20.733 回答