使用列表推导式创建带有空列表的嵌套字典
Using list comprehension to create nested dictionary with empty lists
我想创建一个包含空列表的字典。嵌套字典都具有相同的键。
我已经有了解决方案;但我真的不认为它很聪明:
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': []}}
您可以使用嵌套字典理解 - 外部理解创建字典,对于其中的每个键,另一个内部理解创建内部字典
dictionary = {o: {i:list() for i in inner_keys} for o in outer_keys}
我想创建一个包含空列表的字典。嵌套字典都具有相同的键。 我已经有了解决方案;但我真的不认为它很聪明:
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': []}}
您可以使用嵌套字典理解 - 外部理解创建字典,对于其中的每个键,另一个内部理解创建内部字典
dictionary = {o: {i:list() for i in inner_keys} for o in outer_keys}