如何将看起来像DIct的列表转换为真正的DIct



我正在拆包从API获得的嵌套字典,因此我无法控制它。其中一个子字典显示为<类"列表">形式为{‘A’:‘B’、‘C’:‘D’等}。如何将其转换为冒号左侧的项为键、右侧的项为值的字典?如果有帮助的话,我会使用python 3。

def print_nested(dict_obj):
# Iterate over all key-value pairs of a dict
for key, value in dict_obj.items():
if isinstance(value, dict):
print_nested(value)
else:
if isinstance(value, list):
print(type(value))
print(*value)
else:
print(key, ':', value)

产生输出:

<class 'list'>
{'putCall': 'CALL', 'symbol': 'MSFT_031723C250', etc}

代码的输出与存在一个顶级字典相一致,该字典将一些未知键映射到一个列表,而列表又包含另一个字典。

您对列表内容有点误导,因为您调用的是print(*value),它将列表项分解为print的单独参数。如果您刚刚执行了print(value)(没有*(,您会看到列表中的方括号。您的列表可能只包含一个条目,但也可能包含多个大型字典,其中一个字典的末尾和下一个字典开头可能很难在输出中找到。

如果你有{"foo": [{"bar": 1}]}这样的结构,我不确定你想要什么输出。你只想打印最内部的键和值吗?

然后,您可能希望您的列表处理分支是这样的(尽管如果可能存在不只包含字典的列表,您可能需要更多的逻辑(:

if isinstance(value, list):
for inner in value:
print_nested(inner)

我有一种方法可以将列表和集合关联到dict:你知道,如果你做下面的激活,你会有错误:

PSR=["hello","bye"]
PSR=dict(PSR)
print(PSR)

现在,我想向您展示一个模块来解决您的问题:我们有一个模块来命名dict.fromkeys(列表或集合,密钥的值(,我举了一个例子:

PSR=["hello","bye"]
#our primitive/first list
behave="good"
#the value of the keys 
PSR=dict.fromkeys(PSR,behave)
print(PSR)
#you will have a dict!

最新更新