如何有效地从 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 需要比迭代元素更长的时间
我想从 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 需要比迭代元素更长的时间