如何有效地从python字典中删除一些元素?

问题描述

我想从Python字典中过滤掉一些元素。哪种方法更可取?我的字典很大...

下面是具有较小数据集的示例代码

d = {0: 0,1: 2,2: 4,3: 6,4: 8,5: 10}

第一

d = {i:v for i,v in d.items() if i%2 == 0}

第二

list_to_del = []
for i in d.keys():
    if i%2 == 0:
        list_to_del.append(d)
for i in list_to_del:
    del d[i]
list_to_del.clear()

在第一种情况下是否存在内存泄漏的风险?

解决方法

老实说,您的第一个看起来完全是我会做的。但是,如果确实需要遍历条目并进行过滤,请尝试将其保留为迭代器形式。

entries = filter(lambda x: x[1] % 2 == 0,d.items())
,

第一个更快。 .append()的运行速度很慢,因此,第二个答案中的第一个for循环所需的时间要比对元素的终止要长。