gpt4 book ai didi

python - 将现有的 defaultdict 输出为适当的 JSON 格式以用于 flare 树状图?

转载 作者:行者123 更新时间:2023-11-28 21:50:49 24 4
gpt4 key购买 nike

我有一个 defaultdict(list) 并且我使用了 simplejson.dumps(my_defaultdict) 以将 defaultdict 输出为 JSON 格式.我正在使用 http://bl.ocks.org/mbostock/4063570 中树状图的 HTML 代码但我正在尝试将我的 defaultdict 信息转换为作者正在使用的 JSON 文件的格式。此 JSON 文件名为:/mbostock/raw/4063550/flare.JSON,可在此链接中找到:http://bl.ocks.org/mbostock/raw/4063550/flare.json .

所以这是我的 defaultdict 数据:

my_defaultdict = {5: ['child10'], 45: ['child92', 'child45'], 33:['child38']}

json_data = simplejson.dumps(my_defaultdict)

所以我当前的 json_data 看起来像这样:

{
"5": [
"child10"
],
"45": [
"child92",
"child45"
],
"33": [
"child38"
]
}

所以在我的理解中,数字将是相应的“名称”:“5”,然后我的 JSON 格式文件也将 child 作为“ child ”。就目前而言,我的 JSON 格式输出没有在树状图的 HTML 代码中运行。

预期的结果是这样的:

{
"name": "flare",
"children": [
{
"name": "5",
"children": [
{
"name": "child10", "size": 5000},
]
{
"name": "45",
"children": [
{"name": "child92", "size": 3501},
{"name": "child45", "size": 3567},
]
},
{
"name": "33",
"children": [
{"name": "child38", "size": 8044}
]
}
}

编辑:

@martineau 的答案有效,但这并不是我想要的。我从 defaultdict(list) 和所需的输出开始,如上所述,应该将“children”作为 dict 的列表,而对于 martineau 友好的回答,“children” “这只是一个列表。如果任何人都可以添加一些东西来让它工作,那就太好了。不要担心“大小”变量,现在可以忽略它。

最佳答案

您需要从您的默认字典创建一个新字典。您的示例代码中的 child 只是一个字符串列表,所以我不知道每个字符串的“大小”来自哪里,所以只需将其更改为 dicts 列表(不有一个“大小”键的条目)。

from collections import defaultdict
#import simplejson as json
import json # using stdlib module instead

my_defaultdict = defaultdict(list, { 5: ['child10'],
45: ['child92', 'child45'],
33: ['child38']})

my_dict = {'name': 'flare',
'children': [{'name': k,
'children': [{'name': child} for child in v]}
for k, v in my_defaultdict.items()]}

json_data = json.dumps(my_dict, indent=2)

print(json_data)

输出:

{
"name": "flare",
"children": [
{
"name": 33,
"children": [
{
"name": "child38"
}
]
},
{
"name": 5,
"children": [
{
"name": "child10"
}
]
},
{
"name": 45,
"children": [
{
"name": "child92"
},
{
"name": "child45"
}
]
}
]
}

关于python - 将现有的 defaultdict 输出为适当的 JSON 格式以用于 flare 树状图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31391592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com