这个问题已经有了答案:
Filter dict to contain only certain keys?
13答
我有这些钥匙:

keep = ["a","c"]

我的字典:
testdict = {'
'a':'vala',
'b':'valb',
'c':'valc',
'd':'vald'
}

期望输出:
testdict = {
'a':'vala',
'c':'valc'
}

我要删除与列表中的键不匹配的所有键。
最快的方法是什么?
我试过:
for key, value in testdict.iteritems():
      if key not in keep:
         del testdict[key]

但以上都给了我错误,因为尺寸正在变化。

最佳答案

与其删除,不如构造一个新的dict:

newdict = {k: testdict[k] for k in keep}

如果keep可以包含testdict中不存在的键,则添加适当的条件:
newdict = {k: testdict[k] for k in keep if k in testdict}

如果必须修改dict对象,请记住在遍历字典时不能修改它。所以先遍历然后删除:
to_delete = set(testdict.keys()).difference(keep)
for d in to_delete:
    del testdict[d]

10-07 12:48