Я пытаюсь найти лучший подход для добавления и хранения отсортированных json элементов массива в списке или dict. Я не знаю, что лучше, проще и удобочитаемее для моего случая.
Я собрал минимальный воспроизводимый пример с комментариями того, чего я пытаюсь достичь:
#!/usr/bin/python3.4
import json
json_data = json.loads('{'
'"data":['
'{'
'"#CLIENT":"AAA",'
'"#HOST":"host1.aaa.local",'
'"#GROUP1":"AAA-Group-1"'
'},'
'{'
'"#CLIENT":"AAA",'
'"#HOST":"host2.aaa.local",'
'"#GROUP1":"AAA-Group-1",'
'"#GROUP2":"AAA-Group-2"'
'},'
'{'
'"#CLIENT":"BBB",'
'"#HOST":"host1.bbb.local",'
'"#GROUP1":"BBB-Group-1"'
'},'
'{'
'"#CLIENT":"BBB",'
'"#HOST":"host2.bbb.local",'
'"#GROUP1":"BBB-Group-1",'
'"#GROUP2":"BBB-Group-2",'
'"#GROUP3":"BBB-Group-3"'
'},'
'{'
'"#CLIENT":"CCC",'
'"#HOST":"host1.ccc.local",'
'"#GROUP1":"CCC-Group-1",'
'"#GROUP2":"CCC-Group-2"'
'}'
']'
'}')
# List/dict to store concatenated and sorted
# json elements by number of #GROUP<i> values
grouped_list = []
print('Processing JSON elements:')
print('')
for element in json_data['data']:
print('Processing JSON element: ',element)
i = 1
print('Processing groups:')
while i < 5:
group = '#GROUP'+str(i)
if group in element:
print(group+' found in json element')
#Here: append to integer-indexed list, dict or whatever
else:
break
print('')
#for list in grouped_list:
# Do something with concatenated json elements
# 1st list should contain 'data' json array elements with only #GROUP1
# 2nd list should contain 'data' json array elements with #GROUP1 and #GROUP2 present
Было бы здорово иметь список / dict, к которому я также могу получить доступ, например, grouped_list [2] или что-то подобное, чтобы получить более json элементов, которые имеют # GROUP1 и # GROUP2, а grouped_list [1], чтобы получить json элементов, которые есть только # GROUP1, et c.