zip
不会在这里做。zip
连续迭代所有 3 个列表。您需要的是产品——实际上是 3 个嵌套循环。您可以将其扁平化为单个字典理解,但会牺牲一些可读性。
>>> {i : {j : {k : 0 for k in l3} for j in l2} for i in l1}
{'a': {'1': {'d': 0, 'e': 0},
'2': {'d': 0, 'e': 0},
'3': {'d': 0, 'e': 0}},
'b': {'1': {'d': 0, 'e': 0},
'2': {'d': 0, 'e': 0},
'3': {'d': 0, 'e': 0}}
}
或者,如果您想要最底层的单键字典列表(正如您的o/p建议的那样),
>>> {i : {j : [{k : 0} for k in l3] for j in l2} for i in l1}
{'a': {'1': [{'d': 0}, {'e': 0}],
'2': [{'d': 0}, {'e': 0}],
'3': [{'d': 0}, {'e': 0}]},
'b': {'1': [{'d': 0}, {'e': 0}],
'2': [{'d': 0}, {'e': 0}],
'3': [{'d': 0}, {'e': 0}]}
}