我有字典字典,如bellow(解析的lspci信息)
原始字典:
d={'host':{'v':'v1','d':'d1','sv':'sv1','sd':'sd1'},
'ether':{'v':'v2','d':'d2','sv':'sv2','sd':'sd2'}}
字典用原始字典检查:
to_check={'host':['v','d'],'ether':['v','d','sv']}
我需要这样的输出
output_dict={'host':{'v':'v1','d':'d1'},'ether':{'v':'v2','d':'d2','sv':'sv2'}}
我如何实现使用dict理解? 有另一种简单的方法
答案 0 :(得分:5)
print {k:{key:d[k][key] for key in to_check[k] if key in d[k]} for k in to_check}
<强>输出强>
{'ether': {'d': 'd2', 'v': 'v2', 'sv': 'sv2'}, 'host': {'d': 'd1', 'v': 'v1'}}
答案 1 :(得分:1)
>>> {k:{v:d[k][v] for v in vs} for k,vs in to_check.items()}
{'ether': {'d': 'd2', 'sv': 'sv2', 'v': 'v2'}, 'host': {'d': 'd1', 'v': 'v1'}}
答案 2 :(得分:1)
>>> {key: {l: d.get(key).get(l) for l in lst} for key, lst in to_check.items()}
{'host': {'d': 'd1', 'v': 'v1'}, 'ether': {'sv': 'sv2', 'd': 'd2', 'v': 'v2'}}
使用get
而不是[]
更安全,因为它为您提供了更大的灵活性,例如,如果密钥x
不存在(我只是将其添加到{{1}然后你可以在to_check
中设置另一个值来给你一个默认值:
get