我正在寻找在python dict中删除某些键的最快/最有效的方法
这里有一些选择
for k in somedict.keys():
if k.startswith("someprefix"):
del somedict[k]
或者
dict((k, v) for (k, v) in somedict.iteritems() if not k.startswith('someprefix'))
逻辑上,第一个片段在较小的dict上应该更快,它不创建dict的副本,而是创建一个所有键的列表,但是双重查找和dict重建是非常耗时的。而第二个是更快的更大的听写,但需要2倍的内存。 我已经在一些小基准中检查了我的假设。
快一点吗?
不仅
del
更容易理解,而且似乎比pop()稍快:编辑:感谢Alex Martelli提供了如何进行基准测试的指导。希望我没有在任何地方滑倒。
首先测量复制所需的时间:
复制的dict上的基准:
减去复制成本,我们得到
pop()
的1.872 usec和del
的1.672 usec。如果dict足够大,那么可以生成一个全新的dict。
相关问题 更多 >
编程相关推荐