我有这些钥匙:
keep = ["a","c"]
Run Code Online (Sandbox Code Playgroud)
我的词:
testdict = {'
'a':'vala',
'b':'valb',
'c':'valc',
'd':'vald'
}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
testdict = {
'a':'vala',
'c':'valc'
}
Run Code Online (Sandbox Code Playgroud)
我想删除与列表中的键不匹配的所有键.最快的方法是什么?
我试过了:
for key, value in testdict.iteritems():
if key not in keep:
del testdict[key]
Run Code Online (Sandbox Code Playgroud)
但是由于尺寸变化,上面给出了错误.
phi*_*hag 16
而不是删除,只需构造一个新的字典:
newdict = {k: testdict[k] for k in keep}
Run Code Online (Sandbox Code Playgroud)
如果keep可以包含testdict中不存在的键,请添加适当的条件:
newdict = {k: testdict[k] for k in keep if k in testdict}
Run Code Online (Sandbox Code Playgroud)
如果你绝对必须修改dict对象,请记住,当你遍历它时,你不能修改字典.因此先遍历然后删除:
to_delete = set(testdict.keys()).difference(keep)
for d in to_delete:
del testdict[d]
Run Code Online (Sandbox Code Playgroud)
print({k:testDict[k] for k in keep})
Run Code Online (Sandbox Code Playgroud)
或 py<2.7
print dict((k,testDict[k]) for k in keep)
Run Code Online (Sandbox Code Playgroud)
这些假设 keep 中的每个密钥都保证存在于testDict
| 归档时间: |
|
| 查看次数: |
6495 次 |
| 最近记录: |