【发布时间】:2014-06-08 22:45:19
【问题描述】:
我的代码如下:
import json
def reformat(importscompanies):
#print importscompanies
container={}
child=[]
item_dict={}
for name, imports in importscompanies.iteritems():
item_dict['name'] = imports
item_dict['size'] = '500'
child.append(dict(item_dict))
container['name'] = name
container['children'] = child
if __name__ == '__main__':
raw_data = json.load(open('data/bricsinvestorsfirst.json'))
run(raw_data)
def run(raw_data):
raw_data2 = raw_data[0]
the_output = reformat(raw_data2)
我的问题是,代码没有遍历整个文件。它只输出一个条目。为什么是这样?我是否要重写一些东西,是否需要在每个循环中附加另一个 dict?
此外,似乎 for 循环正在遍历每个 dict 键的迭代项。有没有办法让它只通过一次?
问题确实是
raw_data2 = raw_data[0]
我最终创建了一个迭代器来访问 dict 值。
谢谢。
最后,我希望我的最终 Json 文件看起来像这样,使用我上面提供的数据:
{'name': u'name', 'children': [{'name': u'500 Startups', 'size': '500'}, {'name': u'AffinityChina', 'size': '500'}]}
【问题讨论】:
-
两个问题。 1) 你从
reformat函数返回什么? 2) 在你想要的 JSON 对象中,'size' 对应什么? -
您能否编辑您的问题以准确显示您希望最终 JSON 的样子?可能使用您提供的示例列表中的前 2 个元素。
-
@s16h 我已经添加了上面的示例。
-
@ericchiang 1) 重新格式化应该返回最终的容器(也许我还需要一个附加的容器?)换句话说,正确格式化的 Json。 2) size 没有对应的值,是一个集合的数字。
标签: python json python-3.x d3.js ipython