我正在学习python,我像这样循环循环,将json转换为字典:它可以工作,但这是正确的方法吗?谢谢 :)
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']
这里的JSON:
{ "webm":{ "video": "libvp8", "audio": "libvorbis" }, "h264": { "video": "libx264", "audio": "libfaac" }, "ogg": { "video": "libtheora", "audio": "libvorbis" } }
这里输出:
> 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'}
总体看来还不错。
无需先读取文件,然后使用负载。您可以直接使用负载。
output_json = json.load(open('/tmp/output.json'))
为此,使用i和k是不正确的。它们通常仅应用于整数循环计数器。在这种情况下,它们是关键,因此更合适的方法会更好。也许重命名i为container和k为stream?传达更多信息的东西将更易于阅读和维护。
i
container
k
stream
您可以用于output_json.iteritems()同时遍历键和值。
output_json.iteritems()
for majorkey, subdict in output_json.iteritems(): print majorkey for subkey, value in subdict.iteritems(): print subkey, value
请注意,使用Python 3时,您将需要使用items()而不是iteritems(),因为它已被重命名。