这不是就地完成,而是通过使用popitem()消耗oldDict
from collections import defaultdictdef invert(oldDict): invertedDict = defaultdict(list) while oldDict: key, valuelist = oldDict.popitem() for value in valuelist: invertedDict[value].append(key) return invertedDict
我有一种感觉,除非增加大小,否则决不会调整字典的大小,因此您可能需要定期添加/删除虚拟项目。见收缩率
from collections import defaultdictdef invert(oldDict): invertedDict = defaultdict(list) i=0 while oldDict: key, valuelist = oldDict.popitem() for value in valuelist: invertedDict[value].append(key) i+=1 if i%1000==0: # allow the dict to release memory from time to time oldDict[None]=None del oldDict[None] return invertedDict
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)