如何自动生成多层嵌套字典?基于现有代码实现三层嵌套
实现多层嵌套字典的Python代码修改方案
嘿,我来帮你搞定这个多层嵌套字典的问题~你已经完成了第一层日期到资产的映射,现在只需要把每个资产对应的'0'替换成包含variables键值对的子字典就行啦。
原代码及运行结果
先回顾下你现有的代码:
variables = ['CHG', 'Open', 'Close'] assets= ['GOOG', 'FB'] dates =['28-09-2020', '25-09-2020'] dct = {x: dict(zip(assets, '0' * len(assets))) for x in dates}
运行结果:
{'28-09-2020': {'GOOG': '0', 'FB': '0'}, '25-09-2020': {'GOOG': '0', 'FB': '0'}}
修改后的代码
只需要调整内层字典的生成逻辑,把每个资产对应的值从字符串'0'改成以variables为键、数值0为值的字典:
variables = ['CHG', 'Open', 'Close'] assets= ['GOOG', 'FB'] dates =['28-09-2020', '25-09-2020'] dct = {x: {asset: {var: 0 for var in variables} for asset in assets} for x in dates}
运行结果
执行后就能得到你想要的目标结构:
{'28-09-2020': {'GOOG': {'CHG': 0, 'Open': 0, 'Close': 0}, 'FB': {'CHG': 0, 'Open': 0, 'Close': 0}}, '25-09-2020': {'GOOG': {'CHG': 0, 'Open': 0, 'Close': 0}, 'FB': {'CHG': 0, 'Open': 0, 'Close': 0}}}
逻辑解释
- 最外层是日期循环:遍历
dates里的每个日期作为顶级键。 - 中间层是资产循环:对每个日期,遍历
assets生成子字典的键,每个资产对应的值是另一个字典。 - 最内层是变量循环:用字典推导式生成以
variables为键、0为值的子字典,完美匹配你需要的嵌套结构。
内容的提问来源于stack exchange,提问作者guialmachado
相关产品推荐
相关产品推荐

