Was mache ich, wenn ich eine selbstreferentielle Wörterbuch?

Ich bin neu in Python und bin irgendwie überrascht, dass ich dies nicht kann.

dictionary = {
    'a' : '123',
    'b' : dictionary['a'] + '456'
}

Frage ich mich, was die Pythonic way, richtig zu tun, diese in mein Skript, weil ich das Gefühl, ich bin nicht die einzige, die versucht hat, dies zu tun.

EDIT: Genug Leute, die sich Fragen, was mache ich mit diesem, so sind hier weitere details für meine Anwendungsfälle. Können sagen, ich möchte zu halten dictionary-Objekte, um Dateisystem-Pfade. Die Pfade sind relativ zu anderen Werten in das Wörterbuch. Dies ist ein Beispiel für das, was eines meiner Wörterbücher Aussehen könnte.

dictionary = {
    'user': 'sholsapp',
    'home': '/home/' + dictionary['user']
}

Ist es wichtig, dass an jedem Punkt in der Zeit, die ich ändern kann dictionary['user'] alle Wörterbücher-Werte die änderung widerzuspiegeln. Auch dies ist ein Beispiel, was ich benutze es für, so hoffe ich, dass es vermittelt mein Ziel.

Aus meiner eigenen Forschung ich glaube, ich benötigen, um zu implementieren eine Klasse, dies zu tun.

  • Könnte ich machen, der Ausdruck faul um dies zu beheben?
  • Sie wollen den Wert von dictionary['b'] statisch oder dynamisch? Was würde dictionary Aussehen nach dictionary['a'] = '999'?
  • Ich wollte gerade meinen Beitrag Bearbeiten, diese Frage zu beantworten. Ich will es statisch zu sein, und erkennen, dass g.d....d....c die Antwort würde durch die dynamische. :/
  • Verwandte: > Verwendet der self-referencing-Listen
  • Ich kann nicht verstehen, warum würden Sie wollen, dies zu tun, statt nur über lokale Variablen, die für Ihre Werte werden in relation zu anderen Werten. Aber da Sie Fragen, die Pythonic Weg, dies zu tun, es ist sicherlich Daniel DiPaolo Ansatz.
  • Ich bin mit Jeffrey: Es muss einen besseren Weg, das zu tun, was auch immer es ist Sie versuchen zu erreichen. Wenn Sie mehr Einzelheiten, die wir vielleicht in der Lage sein, um Ihnen zu helfen.
  • Gibt es Sprachen, in denen Sie mit einem Wert von dem, was Sie sind zu definieren, während es zu definieren? (so können Sie fahren, während Sie fahren)
  • Wo ist "g".d....d....c die Antwort," dass jeder meint?
  • McCutchen, ich aktualisiert die post mit einem use-case. @Nick, ich kann in F# oder Scheme. @martineau, muss Er nach dem löschen der post, weil es nicht kompilieren auf Python 2.4 oder Python 2.6 (die letztere version als die version, die er behauptete, es funktionierte auf). Seine Lösung war meine bevorzugte Lösung, aber...
  • Es wurde zurückgezogen/gelöscht, weil Missverständnis.
  • Beachten Sie, dass wenn Sie tatsächlich zum bauen von Pfaden wie in deinem Beispiel, sollte man es mit os.path.join, vor allem, wenn es irgendeine chance, dass dein code ausgeführt wird, unter Windows.
  • Guter Punkt. Die unterschiedlichen os-path-Trennzeichen benutzt werden konnte, indem ein Eintrag in das Wörterbuch auf den Wert von os.sep und darauf zu verweisen. Zum Beispiel, indem die akzeptierten Antworten unten, Sie konnte etwas tun, wie 'home' : '%{sep}shome%{sep}s%{user}s',.
  • Das ist immer noch unix-spezifisch. Verwenden Sie os.Pfad.expanduser ('~'), um den Benutzer-home-Verzeichnis, und leiten Sie alle Pfade von Windows nicht einen einzigen Dateisystem-root).

InformationsquelleAutor sholsapp | 2010-09-17
Schreibe einen Kommentar