程序获取单词列表(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)
等...
因为每个单词只能使用一次。当我到达d15时,它最终会逐渐减少。
len(d15)
741793
d16=makedic(d15,d)
Killed
我假设我的内存不足,我不能使用db,因为密钥是元组,有关如何继续使用的任何想法?
答案 0 :(得分:1)
保存一些内存的一种简单方法可能是将索引存储到单词而不是单词本身。例如,在句子“快速的棕色狐狸跳过懒狗”,你可以表示(“跳跃”,“狗”)为(5,9),因为它们是字符串中的第5和第9个单词。 / p>
更一般地说,我想知道你是否真的需要超越双字案例,因为每个三字组合必须作为两个双字组合存在,对吧?您可能不需要存储那些较大的组合,只需根据需要生成它们。