我有一个这样的列表:
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() ]
请帮助我解决此问题。
答案 0 :(得分:2)
请注意,您的d1
是字典,而不是列表,并且作为所需输出提供的“嵌套列表”实际上不是有效的语法。字典和列表不是同一回事。
也就是说,这是您要尝试进行的转换,以便处理任意深度的嵌套字典:
>>> 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']]]]]