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éclencheraNameErrorMerci 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.