Je cherche le plus simple Generic fort> Générique pour convertir cette liste Python: dans: p>
3 Réponses :
Je définirais une fonction qui effectue une seule étape de regroupement comme celle-ci: puis faire p> ce qui donne la résultat pour foos code>. p> p>
[{'bars': [{'bar': 'R', 'bazs': [{'baz': 'X'}, {'baz': 'Y'}]},
{'bar': 'S', 'bazs': [{'baz': 'Y'}]}],
'foo': 'A'},
{'bars': [{'bar': 'S', 'bazs': [{'baz': 'X'}]}], 'foo': 'B'},
{'bars': [{'bar': 'R', 'bazs': [{'baz': 'Y'}]}], 'foo': 'C'}]
Ceci est une boucle simple sur les données, pas de récursivité. Un arbre auxiliaire où les valeurs sont des clés de dictionnaires sert d'index dans l'arborescence de résultat alors qu'il est construit.
def make_tree(diclist, keylist):
indexroot = {}
root = {}
for d in diclist:
walk = indexroot
parent = root
for k in keylist:
walk = walk.setdefault(d[k], {})
node = walk.setdefault('node', {})
if not node:
node[k] = d[k]
parent.setdefault(k+'s',[]).append(node)
walk = walk.setdefault('children', {})
parent = node
return root[keylist[0]+'s']
foos = make_tree(x, ["foo","bar","baz"])
Quel est votre moyen (pas nécessairement la plus simple, mais la vôtre) de le faire?