基于共享密钥合并两个字典

时间:2020-10-28 04:01:21

标签: python dictionary

我有两个嵌套的字典,它们描述了一组论文的引用行为。例如,在以下玩具示例中,"001"引用了"005",而"010""012"引用了{}。

dict1 = {"001": {"005", "006"}, "002": {"003", "007"}}
dict2 = {"005": {"010", "012"}, "006": None, "003": {"014", "018", "020"}, "007": None}

现在我想将两个字典合并到一个嵌套列表中,看起来像

nestedDict = {"001": {"005": {"010", "012"}, "006": None}...}

我知道可以通过执行类似的操作

轻松完成
nestedDict = {key: {val: dict() for val in valSet} for key, valSet in dict1.items()}
for key, valSet in dict1.items():
    for val in valSet:
        nestedDict[key][val] = dict2[val]

我想知道是否还有更多“直接”方式可以用更简洁的代码(最好是单行代码)代替这四行代码?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

nested_dict = {k1: {v2: dict2[v2] for v2 in v1} for k1, v1 in dict1.items()}

这将导致:

{'001': {'006': None, '005': set(['010', '012'])},
 '002': {'003': set(['018', '014', '020']), '007': None}}