首页 > 解决方案 > 字典用值嵌套字典替换“无”

问题描述

我有一本看起来像这样的字典:

nested_dict = { 'dictA': {'text': "ok",'useleskey':'useles_value','confidence': "lol"},
                'dictB':  None, 
                'dictC':  None, }

每个字典都可以被填充(如dictA)或具有None价值。

我想为每个字典创建一个新列表来总结我可以获得的重要信息。

非空字典的伪代码如下所示:

list_dict_A= [nested_dict["dictA"]["text"], nested_dict["dictA"]["confidence"]]

如果字典是None,那么我想创建以下列表

list_dict_B=[0, 0]

所以在这个例子中,预期的结果将是 3 个具有以下值的列表:

list_dict_A=["ok", "lol"]
list_dict_B=[0, 0]
list_dict_C=[0, 0]

标签: pythonpandaslist

解决方案


由于要创建新变量,因此必须分配给globals().

这是对这本词典执行此操作的一种方法:

for k, v in nested_dict.items():
    var_name = f"list_{k}"
    if v:
        globals()[var_name] = [v.get("text", 0), v.get("confidence", 0)]
    else: 
        globals()[var_name] = [0, 0]
    print (var_name) # just show the var name. Not needed. 

print(list_dictA)
==> ['ok', 'lol']
print(list_dictB)
==> [0, 0

推荐阅读