使用列表理解创建带有空列表的嵌套字典

时间:2021-05-06 09:41:42

标签: python dictionary dictionary-comprehension

我想创建一个字典,里面有空列表的字典。嵌套字典都具有相同的键。 我已经有了解决方案;但我真的不认为它很聪明:

outer_keys = ['out_a', 'out_b', 'out_c']
inner_keys = ['in_a', 'in_b', 'in_c']
dictionary = {}
for o in outer_keys:
    dictionary[o] = {}
    for i in inner_keys:
        dictionary[o][i] = list()

这个有效。 结果是:

{'out_a': 
    {'in_a': [], 
     'in_b': [], 
     'in_c': []}, 
{'out_b': 
    {'in_a': [], 
     'in_b': [], 
     'in_c': []}, 
{'out_c': 
    {'in_a': [], 
     'in_b': [], 
     'in_c': []}}

但是有没有办法在一行中做到这一点?

我试过了

dictionary = dict([(o, {i: list()}) for o in outer_keys for i in inner_keys])

不幸的是只保存最后一个inner_key并导致:

{'out_a': 
    {'in_c': []}, 
'out_b': 
    {'in_c': []}, 
'out_c': 
    {'in_c': []}}

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套的 dict 推导式 - 外部推导式创建字典,对于其中的每个键,另一个内部推导式创建内部字典

dictionary = {o: {i:list() for i in inner_keys} for o in outer_keys}