嵌套的dict在嵌套的dict中,如何使它们自动化?

2024-06-09 14:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在另一个嵌套dict中生成一个嵌套dict,但我只能完成一个步骤

以下是我得到的代码:

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'}}

如何生成dict,每个资产中都有变量

我的目标是得到这样的口述:

{'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}}}

Tags: 代码forclosefblen步骤openvariables
3条回答
{d: {a: {v:0 for v in variables} for a in assets} for d 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}}}
{date: {x: dict(zip(variables, '0' * len(variables))) for x in assets} for date 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'}}}

让我们从里到外做这件事

>>> from itertools import repeat
>>> dict.fromkeys(variables, 0)
{'CHG': 0, 'Open': 0, 'Close': 0}
>>> dict(zip(assets, repeat(_)))
{'GOOG': {'CHG': 0, 'Open': 0, 'Close': 0}, 'FB': {'CHG': 0, 'Open': 0, 'Close': 0}}
>>> dict(zip(dates, repeat(_)))
{'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}}}

所以你可以用

dct = dict(zip(dates, repeat(dict(zip(assets, repeat(dict.fromkeys(variables, 0)))))))

或者以听写理解的形式

dct = {d: {a: dict.fromkeys(variables, 0) for a in assets} for d in dates}

相关问题 更多 >