Je travaille sur un algorithme de compression pour une structure de données spécifique et une partie de celui-ci nécessite de transformer une chaîne en dictionnaire comme suit:
"abc" => {'a':{'b':{'c':{}}}
qui est un groupe de dictionnaires imbriqués basé sur le lettres du mot.
Comment puis-je faire cela de manière récursive en python?
3 Réponses :
C'est une façon:
s = 'abc' d = {} current = d for c in s: current = current.setdefault(c, {}) print(d) # {'a': {'b': {'c': {}}}}
Voici une solution utilisant réduire :
{'a': {'b': {'c': {}}}}
Sortie
from functools import reduce seq = 'abc' result = reduce(lambda value, key: { key : value }, reversed(seq), {}) print(result)
Vous pouvez utiliser la récursivité avec le découpage de liste:
{'a': {'b': {'c': {}}}}
Sortie:
def to_dict(d): return {} if not d else {d[0]:to_dict(d[1:])} print(to_dict('abc'))
Vous voulez probablement dire
{'a': {'b': {'c': {}}}
?{a: {b: {c: {}}}
déclencheraNameError
Merci d'avoir signalé l'erreur, je l'ai corrigée.
Vous avez dit «récursif» dans la question - cela signifie-t-il que vous avez besoin de la solution pour utiliser la récursivité?
De préférence, oui.