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

How to remove efficiently some elements from a python dictionary?

我想从 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-loop 需要比迭代元素更长的时间