我有一个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)
Run Code Online (Sandbox Code Playgroud)
所以我当前的 json_data 看起来像这样:
{
"5": [
"child10"
],
"45": [
"child92",
"child45"
],
"33": [
"child38"
]
}
Run Code Online (Sandbox Code Playgroud)
因此,在我的理解中,数字将是相应的“名称”:“5”,然后我的 JSON 格式文件也会将孩子作为“孩子”。就像现在一样,我的 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}
]
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
@martineau 的答案有效,但这不是我想要的。我从 adefaultdict(list)和所需的输出开始,如上所述,应该将“孩子”作为dicts的列表,而对于 martineau 类型的回答,“孩子”只是一个列表。如果有人可以添加一些东西以使其工作,那就太好了。不要担心“大小”变量,现在可以忽略它。
您需要根据您的 defaultdict 制作一个新字典。您的示例代码中的孩子只是一个字符串列表,所以我不知道每个字符串的“大小”来自哪里,所以只需将其更改为一个列表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)
Run Code Online (Sandbox Code Playgroud)
输出:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3868 次 |
| 最近记录: |