La définition de la valeur dans une étude python dictionnaire donné une liste d'indices et de la valeur

Désolé si cette question a été répondu avant, j'ai été à la recherche de solutions mais je suis peut-être pas en utilisant les bons termes de recherche.

De toute façon, ce que j'essaie de faire est de définir par programmation d'une valeur dans un dictionnaire, éventuellement imbriquées, étant donné une liste d'indices et d'une valeur.

Ainsi, par exemple, disons que ma liste d'indices est:

['person', 'address', 'city'] 

et la valeur est

'New York'

Je veux comme résultat un objet dictionary comme:

{ 'Person': { 'address': { 'city': 'New York' } }

Fondamentalement, la liste représente un "chemin" imbriquée dans un dictionnaire.

Je pense que je peux construire le dictionnaire lui-même, mais là où je suis d'achoppement est de savoir comment définir la valeur. Évidemment, si je viens d'écrire du code pour ce qui est manuel, il serait:

dict['Person']['address']['city'] = 'New York'

Mais comment puis-je l'index dans le dictionnaire et définir la valeur comme programme si j'ai juste une liste des indices et de la valeur?

Espère que cela a un sens et n'est pas trop con une question... 🙂 Merci pour toute aide.

  • Quel est le problème avec dict[x][y][z] = value? Où obtenez-vous value à partir de? C'est quoi ce bizarre format?
  • C'est faux parce qu'il peut avoir de longueur variable nombre de clés imbriquées.
  • Vous pouvez être en mesure d'éviter de nidification par l'aide de n-uplet clés: d[tuple(da_list)] = value
  • Pour plus de contexte, je dois prendre de nombreuses chaînes de caractères dans le format 'key1:key2:key3=valeur" et la transformer en un imbriquée dictionnaire, où key1 est au premier niveau, key2 à la deuxième, etc. Les chaînes peuvent avoir une touche, deux touches, trois touches. Donc un peu de ficelle de fractionnement me met une liste de clés, et une valeur et où je vais, à partir de là est la question suivante...
  • La question est: "pourquoi avez-vous transformer cela en un imbriquée dictionnaire?" Êtes-vous sûr que vous avez vraiment besoin d'un imbriquée dictionnaire? Des choses comme cela peut souvent être codé mieux avec tuple clés, ou d'autres structures de données.
  • En fin de compte l'objet construit sera cracher comme JSON...où la hiérarchie est nécessaire. Mais si il ya une meilleure façon d'aller de mes chaînes de caractères à un stringified objet JSON je suis très ouvert à ça 🙂 j'ai peut-être le génie de la solution!?
  • Quel est le problème avec juste d["key1:key2:cle3"] = valeur?
  • Si le problème est le json conversion, vous pouvez être en mesure d'utiliser un tuple-clés à l'interne et à seulement convertir à une structure imbriquée lorsque vous devez produire le json. @ekhumoro j'imagine que le programme qui reçoit les données s'attend à quelque chose de imbriqués, comme indiqué dans la question, donc, à l'aide d'une chaîne ne serait pas produire une production utilisable de toute façon(même si json valide).
  • Oui, mon commentaire était un peu rhétorique: l'OP n'a pas entièrement défini son vrai problème.

InformationsquelleAutor peterk | 2012-12-03