Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表转换为嵌套dict?_Python_Dictionary - Fatal编程技术网

Python 如何将列表转换为嵌套dict?

Python 如何将列表转换为嵌套dict?,python,dictionary,Python,Dictionary,我正试图根据下面的列表创建一个嵌套的dicts assets = ["GOOG", "AMZN"] variables=['LastTradePrice','Spread','QTD'] c = ['0'] 我尝试了下面的代码,但它缺少一些信息,导致了一个简短的dict,只有一个资产和一个变量,我期望2个资产作为“主键”,3个变量作为“子键”,每个“子键”后面都有0作为值 尝试了此代码: dct = {x: {str(y): str(z)} for

我正试图根据下面的列表创建一个嵌套的dicts

assets = ["GOOG", "AMZN"]

variables=['LastTradePrice','Spread','QTD']

c = ['0']
我尝试了下面的代码,但它缺少一些信息,导致了一个简短的dict,只有一个资产和一个变量,我期望2个资产作为“主键”,3个变量作为“子键”,每个“子键”后面都有0作为值

尝试了此代码:

dct = {x: {str(y): str(z)} for x, y, z in zip(assets,variables,c)}
{'GOOG':{'LastTradePrice':'0'}}
{'GOOG': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}, 'AMZN': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}}

我得到的结果:

dct = {x: {str(y): str(z)} for x, y, z in zip(assets,variables,c)}
{'GOOG':{'LastTradePrice':'0'}}
{'GOOG': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}, 'AMZN': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}}

预期结果:

dct = {x: {str(y): str(z)} for x, y, z in zip(assets,variables,c)}
{'GOOG':{'LastTradePrice':'0'}}
{'GOOG': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}, 'AMZN': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}}

试试这个

res = {x: dict(zip(variables, c * len(variables))) for x in assets}
print(res)
输出:

dct = {x: {str(y): str(z)} for x, y, z in zip(assets,variables,c)}
{'GOOG':{'LastTradePrice':'0'}}
{'GOOG': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}, 'AMZN': {'LastTradePrice': '0', 'Spread': '0', 'QTD': '0'}}


{k:{v:c[0]表示变量中的v}表示资产中的k}
您是否愿意解释为什么它是错误的,以及您更改了什么?出于学习目的。因为
zip(资产、变量、c)
。只需打印
列表(zip(资产、变量、c))
您就会看到。只有当所有
资产
变量
c
长度相同时,您的代码才会工作