Помогите написать цикл для JSON ответа
Есть массив JSON, вот выражение для печати одной строки массива:
print(r_write_iops['entries'][0]['content']['values']['spb']['dae_1_0_disk_0']) выводит значение
Требуется перебрать в цикле dae_1_0_disk_X, так как дисков много. Как лучше сделать? Называние диском может быть
"dpe_disk_5": 2323
"dpe_disk_4": 2323
"dpe_disk_7": 2323
"dae_1_0_disk_7": 2323
Ответы (2 шт):
Автор решения: Danny
→ Ссылка
Если правильно вас понял, то так:
for n in range(0, x):
diskid = 'dae_1_0_disk_' + n
print(r_write_iops['entries'][0]['content']['values']['spb'][diskid])
Может быть, вам лучше подойдёт такой вариант:
disks = ['dae_1', 'dpe_2', 'abc_3']
for diskid in disks:
print(r_write_iops['entries'][0]['content']['values']['spb'][diskid])
Или так:
disks = ['dae_1_0_disk_', 'dpe_disk_']
digits = range(0, 9)
for disk in disks:
for n in digits:
print(r_write_iops['entries'][0]['content']['values']['spb'][disk + n])
Четвертый вариант
disks = ['dae_1_0_disk_', 'dpe_disk_']
digits = range(0, 9)
for disk in disks:
for n in digits:
disk_id = disk + str(n)
disk_value = r_write_iops['entries'][0]['content']['values']['spb'][disk_id]
print(disk_id + ' : ' + disk_value)
Автор решения: mrvol
→ Ссылка
Может так?
for k, v in r_write_iops['entries'][0]['content']['values']['spb'].items():
if 'disk' in k:
print('Disk - %s, Value - %s' % (k, v))