我正在尝试将数据从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]}}}