【发布时间】:2013-10-19 23:23:25
【问题描述】:
程序获取一个单词列表(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,因为键是元组,有什么想法可以继续吗?
【问题讨论】:
-
制作下一个后是否需要保留较早的字典?如果没有,只需
del他们,或者,更好的是,只使用一个变量并继续将makedic的结果分配给它。 -
是的,我做到了。它最初停在 13 点。
-
你可能有太多的可能性要管理:对于一组只有 30 个单词的情况,我在一个案例中有 1856284 个链(诚然,这是一个异常大的数字)。在一个 34 字的案例中,我有 2978802 个序列,只是以“成功”开头。
-
我想这个词的选择很重要,我用的词是ling.gu.se/~lager/python_exercises.html上的 pokemon #45@
标签: python-2.7