J'ai une structure de données dict avec différentes "profondeurs". par "profondeurs" je veux dire par exemple: Lorsque la profondeur est 1, dict sera comme:Comment itérer une dictée de "profondeurs" dynamiques en python?
{'str_key1':int_value1, 'str_key2:int_value2}
Lorsque la profondeur est 2, dict sera comme:
{'str_key1':
{'str_key1_1':int_value1_1,
'str_key1_2':int_value1_2},
'str_key2':
{'str_key2_1':int_value2_1,
'str_key2_2':int_value2_2} }
ainsi de suite et ainsi de suite .
Quand j'ai besoin pour traiter les données, maintenant je fais ceci:
def process(keys,value):
#do sth with keys and value
pass
def iterate(depth,dict_data):
if depth == 1:
for k,v in dict_data:
process([k],v)
if depth == 2:
for k,v in dict_data:
for kk,vv, in v:
process([k,kk],v)
if depth == 3:
.........
donc j'ai besoin n pour les boucles quand profondeur est n. Comme la profondeur peut aller jusqu'à 10, je me demande s'il existe une façon plus dynamique de faire l'itération sans avoir à écrire toutes les clauses if et for.
Merci.
+1. C'est un truc sympa – aaronasterling
Je n'arrive pas à comprendre où vous ajoutez des clés à la liste des clés. Il semble que toutes les clés, mais les dernières sont abandonnées. – deinst
@deinst, cela supprime toutes les clés qui ne sont pas des nœuds feuille. Mais, vous pouvez facilement produire ceux-ci en cédant après avoir ajouté aussi. Il faudra quelques modifications pour convenir à une application particulière. (J'utilise ce modèle lorsque je récursse sur un système de fichiers). – carl