I'm learning python and i loop like this the json converted to dictionary: it works but is this the correct method? Thank you :)
import json
output_file = open('output.json').read()
output_json = json.loads(output_file)
for i in output_json:
print i
for k in output_json[i]:
print k, output_json[i][k]
print output_json['webm']['audio']
print output_json['h264']['video']
print output_json['ogg']
here the JSON:
{
"webm":{
"video": "libvp8",
"audio": "libvorbis"
},
"h264": {
"video": "libx264",
"audio": "libfaac"
},
"ogg": {
"video": "libtheora",
"audio": "libvorbis"
}
}
here output:
> h264
audio libfaac video libx264
ogg
> audio libvorbis video libtheora webm
> audio libvorbis video libvp8 libvorbis
> libx264 {u'audio': u'libvorbis',
> u'video': u'libtheora'}
That seems generally fine.
There's no need to first read the file, then use loads. You can just use load directly.
Using i and k isn't correct for this. They should generally be used only for an integer loop counter. In this case they're keys, so something more appropriate would be better. Perhaps rename
i
ascontainer
andk
asstream
? Something that communicate more information will be easier to read and maintain.You can use
output_json.iteritems()
to iterate over both the key and the value at the same time.Note that, when using Python 3, you will need to use items() instead of iteritems(), as it has been renamed.
json_data = json.loads(url)
If list is there, then iterate: