Lea*_*ple 6 python json ipython python-3.x d3.js
我的代码如下:
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)
Run Code Online (Sandbox Code Playgroud)
我的问题是,代码没有通过整个文件.它只输出一个条目.为什么是这样?我是否正在重写某些内容,是否需要在每个循环中附加的另一个dict?
而且,似乎for循环正在通过每个dict键的iteritems.有没有办法让它只通过一次?
问题确实如此
raw_data2 = raw_data[0]
Run Code Online (Sandbox Code Playgroud)
我最终创建了一个迭代器来访问dict值.
谢谢.
最后,我希望我的最终Json文件看起来像这样,使用我上面提供的数据:
{'name': u'name', 'children': [{'name': u'500 Startups', 'size': '500'}, {'name': u'AffinityChina', 'size': '500'}]}
Run Code Online (Sandbox Code Playgroud)
eri*_*ang 11
试试这个.虽然您的示例输入和输出数据并未真正提供有关"名称"字段应来自何处的许多线索.我假设你想要列表中原始项目的名称.
original_json = json.load(open('data/bricsinvestorsfirst.json'),'r')
response_json = {}
response_json["name"] = "analytics"
# where your children list will go
children = []
size = 500 # or whatever else you want
# For each item in your original list
for item in original_json:
children.append({"name" : item["name"],
"size" : size})
response_json["children"] = children
print json.dumps(response_json,indent=2)
Run Code Online (Sandbox Code Playgroud)
“它只输出一个条目”,因为当您说时,您只选择 JSON 文件中的第一个字典raw_data2 = raw_data[0]
尝试像这样作为起点(我还没有测试/运行它):
import json
def run():
with open('data/bricsinvestorsfirst.json') as input_file:
raw_data = json.load(input_file)
children = []
for item in raw_data:
children.append({
'name': item['name'],
'size': '500'
})
container = {}
container['name'] = 'name'
container['children'] = children
return json.dumps(container)
if __name__ == '__main__':
print run()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23606 次 |
最近记录: |