“拼合”嵌套字典

时间:2019-05-07 10:47:30

标签: python-3.x dictionary

我有一个python字典,其中每个值都是嵌套在其中的另一个字典(即(k:{_k:_v}的形式))。
我想将其更改为{(k,_k,_v)}形式的元组列表(或集合)。
例如:

dict_form = {'a': {'b': 5, 'c': 10},
             'b': {'c': 15,'d': 20}}

desired_output = {('a','b',5), ('a','c',10), ('b','c',15), ('b','d',20)}

我正在寻找简化的pythonic方法。
谢谢!

编辑:我的解决方案是
set.union(*({(k,_k,_v) for _k, _v in v.items()} for k,v in dict_form.items()))
,但是被接受的答案更加简洁(即使它们是等效的)

1 个答案:

答案 0 :(得分:1)

使用嵌套的集合理解

例如:

dict_form = {'a': {'b': 5, 'c': 10},
             'b': {'c': 15,'d': 20}}
print({(k, m, n) for k, v in dict_form.items() for m, n in v.items()})

输出:

{('a', 'b', 5), ('b', 'c', 15), ('b', 'd', 20), ('a', 'c', 10)}