这个问题已经有了答案:
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]