我正在学习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'}
发布于 2018-12-07 11:42:32
json_data = json.loads(url)
如果列表在那里,那么迭代:
for majorkey, subdict in json_data.iteritems():
for one_majorkey in subdict:
for subkey, value in one_majorkey.iteritems():
for each_subkey, valu_U in value.iteritems():
for each_sub_subkey, value_Q in valu_U.iteritems():
for each_sub_sub_subkey, value_num in value_Q.iteritems():
print each_sub_sub_subkey, value_num
发布于 2018-12-07 12:41:58
无需先读取文件,然后使用加载。您可以直接使用负载。
output_json = json.load(open('/tmp/output.json'))
使用i和k对此不正确。它们通常只应用于整数循环计数器。在这种情况下,它们是关键,所以更合适的东西会更好。也许重命名i
为container
和k
作为stream
?传达更多信息的东西将更容易阅读和维护。
您可以使用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(),因为它已被重命名。
https://stackoverflow.com/questions/-100006238
复制相似问题