我们有一个字典
d1
和一个条件 cond
。我们希望 d1 只包含满足条件 cond
的值。一种方法是:d1 = {k:v for k,v in d1.items() if cond(v)}
然而,这样会创建一个新的字典,如果 d1
很大,则可能非常浪费内存。
另一种选择是:
for k,v in d1.items():
if not cond(v):
d1.pop(k)
但是,在迭代过程中修改字典会导致错误:“RuntimeError: dictionary changed size during iteration”。
在Python3中,如何正确地就地(in-place)过滤字典?
cond(v)
的键集是否很大?此外,您预计d1
会变得多大? - Joel Cornettcond
。 - Joel Cornett