我有一个非常大的dict
,我想要del
来自它的许多元素。也许我应该这样做:
new_dict = { key:big_dict[key] for key in big_dict if check(big_dict[key] }
但是,我没有足够的内存来将old_dict
和new_dict
保留在RAM中。有没有办法解决?
添加:
我不能逐个删除元素。我需要对值进行测试,以找到我想要del的元素。
我也可以在for循环中删除元素,如:
for key in dic:
if test(dic(key)):
del dic[key]
这是一个错误......无法在循环中改变len(dic)......
我的上帝......我甚至无法记住钥匙到del,钥匙太多......
我知道,如果dict类没有这样做的功能,也许这样做的唯一方法就是弄错新电脑......
答案 0 :(得分:1)
您可以尝试遍历字典并删除
不需要的元素del big_dict[key]
这样你就不会复制字典了。
答案 1 :(得分:1)
以下是一些选项:
pickle
和shelve
可能会有所帮助。.keys()
中的索引存储要删除的密钥,这可以提高内存效率。只要在调用.keys()
之间未修改字典,就可以了。如果要删除大约一半的元素,请使用二进制序列执行此操作(1 =删除,0 =保留)。如果要删除(或不删除)绝大多数元素,则将相应的键作为整数存储在列表中。 答案 2 :(得分:0)