在Python中从dict中删除某些键的最快方法 [英] Fastest way of deleting certain keys from dict in Python

查看:193
本文介绍了在Python中从dict中删除某些键的最快方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找删除python字典中某些键的最快/最有效的方法

I'm looking for most fastest/effective way of deleting certain keys in a 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'))

从逻辑上讲,较小的dicts上的第一个代码片段应该更快,它不会创建dict的副本,而是创建所有键的列表,但是双重查找和dict重建非常耗时.第二个命令在较大的字典上速度更快,但需要2倍以上的内存. 我已经在一些小的基准测试中验证了我的假设.

Logically first snippet should be faster on smaller dicts, it doesn't create a copy of a dict but creates a list of all keys, however double lookups and dict rebuilding is time consuming. While the second is faster on bigger dicts, but requires 2x more memory. I've checked my assumption in some small benchmark.

有什么更快的方法吗?

Anything faster?

推荐答案

如果字典足够大,则可以生成一个全新的字典.

If the dict is large enough, it may make sense to generate a whole new dict instead.

dict((k, v) for (k, v) in somedict.iteritems() if not k.startswith('someprefix'))

这篇关于在Python中从dict中删除某些键的最快方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆