从字典列表创建嵌套字典

2024-09-29 19:03:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有像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理解?? 还有别的简单的方法吗


Tags: 信息host字典sddict词典v2d2
3条回答
>>> {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不存在(我刚刚将其添加到to_check),则可以在get中设置另一个值以提供默认值:

>>> {key: {l: d.get(key, 'Does Not Exist').get(l, 'Does Not exit') for l in lst} for key, lst in to_check.items()}
{'host': {'x': 'Does Not exit', 'd': 'd1', 'v': 'v1'}, 'ether': {'sv': 'sv2', 'd': 'd2', 'v': 'v2'}}
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'}}
>>> {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'}}

相关问题 更多 >

    热门问题