【发布时间】:2015-10-02 04:52:07
【问题描述】:
我有一个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。
这是我的默认字典数据:
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 格式文件也将孩子作为“孩子”。就像现在一样,我的 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) 和所需的输出开始,如上所述,“孩子”应该是dicts 的列表,而对于马蒂诺的回答,“孩子”只是一个列表。如果有人可以在其中添加一些东西以使其工作,那就太好了。不用担心“size”变量,暂时可以忽略。
【问题讨论】:
-
你能发布一个预期输出格式的例子吗?
-
所以如果你能请到这个链接:bl.ocks.org/mbostock/raw/4063550/flare.json 然后你可以看到。但我会编辑我的问题以包含预期的结果。感谢您指出这一点。
-
我对“儿童”的回答是一个字符串列表,因为这就是您在问题中
my_defaultdict所拥有的内容。如果您希望它是一个字典列表,那么这就是需要放入my_defaultdict的内容 - 这就是为什么我多次要求您显示一些真实数据(或真实数据格式的假数据) ) 在你的问题中。 -
@martineau:嗨,但真实数据看起来像这样,my_defaultdict。完全一样:列表的默认字典:my_defaultdict = {5: ['child10'], 45: ['child92', 'child45'], 33:['child38']}。如果我没有从一开始就说得很清楚,请道歉。这是我的数据。这不是列表的默认字典吗?谢谢。键是数字,例如5, 45, 33。这些值是相应的子级列表。
-
明白了......那么我的答案的当前版本会尽可能接近您的预期输出(自从您第一次接受它以来它已被修改)。