Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 将混合嵌套字典转换为列表_Python_List_Dictionary - Fatal编程技术网

Python 将混合嵌套字典转换为列表

Python 将混合嵌套字典转换为列表,python,list,dictionary,Python,List,Dictionary,我有这样一份清单: d1= {'Hiraki': {'Hiraki_2': ['KANG_751']}, 'LakeTaupo': {'LakeTaupo_4': ['KANG_708', 'KANG_785'], 'LakeTaupo_6': ['KANG_785'], 'LakeTaupo_2': ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785'], 'LakeTaupo_3': ['KANG_669', 'KANG_669', 'KANG_7

我有这样一份清单:

d1=  {'Hiraki': {'Hiraki_2': ['KANG_751']}, 'LakeTaupo': {'LakeTaupo_4': ['KANG_708', 'KANG_785'], 'LakeTaupo_6': ['KANG_785'], 'LakeTaupo_2': ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785'], 'LakeTaupo_3': ['KANG_669', 'KANG_669', 'KANG_708', 'KANG_708', 'KANG_669']}}
我想将此嵌套列表转换为嵌套列表,如:

d2= ['Hiraki': ['Hiraki_2': ['KANG_751']], 'LakeTaupo': ['LakeTaupo_4': ['KANG_708', 'KANG_785'], 'LakeTaupo_6': ['KANG_785'], 'LakeTaupo_2': ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785'], 'LakeTaupo_3': ['KANG_669', 'KANG_669', 'KANG_708', 'KANG_708', 'KANG_669']]]
我下面的python代码没有将字典完全转换为列表:

list_key_value = [ [k,v] for k, v in d1.items() ]

请帮我解决这个问题。

请注意,您的
d1
是一个dict,而不是一个列表,并且您作为所需输出提供的“嵌套列表”实际上不是有效的语法。字典和清单不是一回事

也就是说,以下是如何以处理任意深度嵌套字典的方式进行转换:

>>> def dict_to_list(d: dict) -> list:
...     if isinstance(d, list):
...         return d
...     if isinstance(d, dict):
...         return [[k, dict_to_list(v)] for k, v in d.items()]
...     return [d]
...
>>> d1=  {'Hiraki': {'Hiraki_2': ['KANG_751']}, 'LakeTaupo': {'LakeTaupo_4': ['KANG_708', 'KANG_785'], 'LakeTaupo_6': ['KANG_785'], 'LakeTaupo_2': ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785'], 'LakeTaupo_3': ['KANG_669', 'KANG_669', 'KANG_708', 'KANG_708', 'KANG_669']}}
>>> dict_to_list(d1)
[['Hiraki', [['Hiraki_2', ['KANG_751']]]], ['LakeTaupo', [['LakeTaupo_4', ['KANG_708', 'KANG_785']], ['LakeTaupo_6', ['KANG_785']], ['LakeTaupo_2', ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785']], ['LakeTaupo_3', ['KANG_669', 'KANG_669', 'KANG_708', 'KANG_708', 'KANG_669']]]]]

请注意,您的
d1
是一个dict,而不是一个列表,并且您作为所需输出提供的“嵌套列表”实际上不是有效的语法。字典和清单不是一回事

也就是说,以下是如何以处理任意深度嵌套字典的方式进行转换:

>>> def dict_to_list(d: dict) -> list:
...     if isinstance(d, list):
...         return d
...     if isinstance(d, dict):
...         return [[k, dict_to_list(v)] for k, v in d.items()]
...     return [d]
...
>>> d1=  {'Hiraki': {'Hiraki_2': ['KANG_751']}, 'LakeTaupo': {'LakeTaupo_4': ['KANG_708', 'KANG_785'], 'LakeTaupo_6': ['KANG_785'], 'LakeTaupo_2': ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785'], 'LakeTaupo_3': ['KANG_669', 'KANG_669', 'KANG_708', 'KANG_708', 'KANG_669']}}
>>> dict_to_list(d1)
[['Hiraki', [['Hiraki_2', ['KANG_751']]]], ['LakeTaupo', [['LakeTaupo_4', ['KANG_708', 'KANG_785']], ['LakeTaupo_6', ['KANG_785']], ['LakeTaupo_2', ['KANG_751', 'KANG_785', 'KANG_785', 'KANG_785']], ['LakeTaupo_3', ['KANG_669', 'KANG_669', 'KANG_708', 'KANG_708', 'KANG_669']]]]]