Ich habe eine ziemlich große JSON-Ausgabe, die ich neu kategorisieren möchte.Python 3 effiziente dynamische Wörterbuch Gruppierung
Ich habe eine Reihe von Schleifen zu tun, was ich will.
Ich frage mich, ob es eine effizientere Möglichkeit gibt, das zu tun, was ich mache?
Hier ist, was ich tue ...
greifen die json blob
nodes = self.getNodes()
data = json.loads(nodes)
Temporäre Liste für die Gruppen ... und
group_list = list()
das Wörterbuch Construct ...
# I avoid the shorthand form for legibility
group_dict = dict()
group_dict['all'] = dict()
group_dict['all']['hosts'] = list()
group_dict['all']['vars'] = list()
Lo op 1: eine Liste der Gruppen Anfügen ...
for l in data:
if '-' not in l['hostname']:
g = re.split('[0-9]+',l['hostname'],flags=re.IGNORECASE)[0]
group_list.append(g)
eindeutige Werte Get ...
group_list = sorted(set(group_list))
Loop 2: Bestücken group_dict
mit Gruppen Wörterbücher ...
for group in group_list:
group_dict[group] = dict()
group_dict[group]['hosts'] = list()
group_dict[group]['vars'] = list()
Loop3 : Tragen Sie die Knotennamen in das richtige Gruppenwörterbuch ein ...
for n in data:
if '-' not in n['hostname']:
grp = re.split('[0-9]+',n['hostname'],flags=re.IGNORECASE)[0]
group_dict[grp]['hosts'].append(n['hostname'])
Return gegliederten JSON blob ...
return json.dumps(group_dict,indent=1)
lesen Sie auf 'setdefault' ... ziemlich nett –