Python嵌套字典到树结构字典(json)

时间:2019-01-09 20:53:01

标签: python pandas dictionary tree

我正在尝试将数据从df结构化为嵌套字典和树状结构。 我想要每个节点都有键和子节点,并且试图在一个Flask应用程序中显示三个级别(1、1.1和1.1.1)。

(我已经做过一些研究,并尝试使用集合中的defaultdict,一旦将其带到我身边,我便在尝试这种方法。如果有更好的方法,我将很乐意接受。感谢您的帮助)

df =pd.DataFrame({
'Country': ['Germany', 'Germany', 'Canada', 'Canada'], 
'PopulationEst': [8, 4, 35, 50], 
'Continent': ['Europe', 'Europe', 'North America', 'North America']},
columns=['Continent','Country','PopulationEst'])

然后我生成我的嵌套字典:

mydict = {}
for lst in df.values:
    leaf = mydict 
    for path in lst[:-2]:
       leaf = leaf.setdefault(path, {})
    leaf.setdefault(lst[-2], list()).append(lst[-1])  

mydict= {'Europe': {'Germany': [8L, 4L]}, 'North America': {'Canada': [35L, 50L]}}

我正在尝试实现以下输出:

{'key':'Europe', "children":[
      {'key': 'Germany', "children":[8L, 4L]}
             ]},
'key':'North America', "children":[
      {'key': 'Canada', "children": [35L, 50L]}}}

使用字典理解:

final_dict = {outer_k: {inner_k: {'key':inner_k, 'value':inner_v} for inner_k, inner_v in outer_v.items()} for outer_k, outer_v in mydict.items()}

我得到以下输出:

Out[2]: 
{'Europe': {'Germany': {'key': 'Germany', 'value': [8L, 4L]}},
'North America': {'Canada': {'key': 'Canada', 'value': [35L, 50L]}}}

0 个答案:

没有答案