我正在尝试编写一个程序,使用shelve数据库将字母排序作为键,列表中的单词作为值。例如:
db['mnoo'] = ['moon', 'mono']
我写了一个函数,它接受一个文件名并将其加载到shelve中。第一部分,将文件转换成与shelve相同布局的字典很好用,但是shelve部分需要很长时间。
我正在尝试使用大约100k条目的字典,每个值都是列表。似乎每1000个条目需要15-20秒,每个条目需要大约1kb的空间。这正常吗?
代码如下:
def save_to_db(filename, shelve_in='anagram_db'):
dct = anagrams_from_list(process_file(filename))
with shelve.open(shelve_in, 'c') as db:
for key, wordlist in dct.items():
if not key in db:
db[key] = wordlist
else:
db[key].extend(wordlist)
编辑:仅简单澄清一下,字典中的每个列表大约只有1-3个单词,不应该太大。