Python: читать словарь json и loop
Я изучаю python и я loop, как этот 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'}
Ответы
Ответ 1
Это кажется вообще хорошим.
Нет необходимости сначала читать файл, а затем использовать нагрузки. Вы можете просто использовать загрузку напрямую.
output_json = json.load(open('/tmp/output.json'))
Использование я и 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
Ответ 2
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