构建存储分词嵌套列表的大型字典时内存占用激增求助
看起来你需要把每个源字典键对应的分词哈希嵌套列表,和原键一一对应起来生成新字典对吧?我来给你几个实用的实现方案:
解决方案
核心思路就是基于源字典的键,把对应的分词哈希嵌套列表映射到同一个键下,具体可以分两种场景来实现:
场景1:已经提前生成好所有分词哈希结果
如果你的分词和哈希处理已经完成,并且结果已经和源字典的键对应好了(比如存在一个临时的结果集合),那直接构建最终字典就行:
# 你的源字典 source_dict = { '1' : 'the horse', '2' : 'grass is green' } # 假设你已经生成的分词哈希嵌套列表(和源字典键一一对应) tokenized_hashes = { '1': [[1342, 24352, 524354, 356345], [35663, 53635, 25245, 457577]], '2': [[43412, 324423, 66546, 86887], [398908, 46523, 432432, 9854]] } # 这时候tokenized_hashes就是你要的最终字典 # 如果是分步生成的,也可以逐个赋值: final_dict = {} for key in source_dict: # 这里替换成你获取对应键的分词哈希列表的逻辑 final_dict[key] = tokenized_hashes[key]
场景2:边遍历源字典边生成分词哈希
如果你的分词和哈希处理需要实时对源文本进行,那可以在遍历源字典的同时完成处理,一步到位构建最终字典:
def tokenize_and_hash(text): # 这里替换成你实际的分词+哈希逻辑,返回嵌套列表 # 举个模拟例子:把文本拆分后,给每个词生成包含4个哈希值的子列表 tokens = text.split() # 用hash()模拟哈希处理,实际替换成你的哈希算法即可 return [[hash(token) + i for i in range(4)] for token in tokens] # 源字典 source_dict = { '1' : 'the horse', '2' : 'grass is green' } final_dict = {} # 遍历源字典的键和文本,生成对应结果 for key, text in source_dict.items(): final_dict[key] = tokenize_and_hash(text) # 打印看看结果 print(final_dict)
运行后会得到你期望的格式:
{ '1': [[-1898560030, -1898560029, -1898560028, -1898560027], [1290207713, 1290207714, 1290207715, 1290207716]], '2': [[-1509404704, -1509404703, -1509404702, -1509404701], [1599980447, 1599980448, 1599980449, 1599980450], [1849892450, 1849892451, 1849892452, 1849892453]] }
注意事项
- 一定要保证新字典的键和源字典完全一致:遍历源字典的键是最稳妥的方式,避免出现键不匹配或者遗漏的问题。
- 你的分词哈希函数要确保返回的是嵌套列表结构,这样赋值后才能得到你想要的格式。
- 如果是批量生成分词结果,建议用字典存储中间结果(而不是列表),这样能直接通过键对应,避免顺序错乱的问题。
内容的提问来源于stack exchange,提问作者ilyab
相关产品推荐
相关产品推荐

