Richtige Dictionary-Ordnung...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

Hallo,

das Beispiel unten zeigt die Rückgabewert (Dictionary) von einem Programm, mit dem ich arbeite.

Code: Alles auswählen

NEW: 0
    Element01 = 1
    Element02 = 2
NEW: 1
    Element01 = 3
    Element02 = 4
NEW: 2
    Element01 = 5
    Element02 = 6
meine Frage ist, ob das Dictionary so sein sollte: {"NEW":{"Element01 ":1, "Element02 ":2}, "NEW":{"Element01 ":3, "Element02 ":4}, "NEW":{"Element01 ":5, "Element02 ":6}}

danke
BlackJack

@zizou2981: Dictionaries haben keine Ordnung und das was Du da als angebliches Ergebnis zeigst kann so nicht sein, weil es jeden Schlüssel nur einmal geben darf.

Code: Alles auswählen

In [203]: {"NEW":{"Element01 ":1, "Element02 ":2}, "NEW":{"Element01 ":3, "Element02 ":4}, "NEW":{"Element01 ":5, "Element02 ":6}}
Out[203]: {'NEW': {'Element01 ': 5, 'Element02 ': 6}}
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@BlackJack: man darf doch ein Key mehrmals eingeben. aber in diesem Fall greiftman auf die Values wie folgt zu:

Code: Alles auswählen

>>> S = {"NEW":{"Element01 ":1, "Element02 ":2}, "NEW":{"Element01 ":3, "Element02 ":4}, "NEW":{"Element01 ":5, "Element02 ":6}}
>>> S[(S.keys())[1]]["Element01 "]
3
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Zeige doch mal richtigen Code und bastele keinen zusammen und tue dann so als ob du diesen im interaktiven Interpreter ausgeführt hättest. Was du da zeigst funktioniert nämlich nicht.
Das Leben ist wie ein Tennisball.
BlackJack

@zizou2981: Nein es kann keinen Schlüssel mehrmals geben. Und Dein Quelltext kann so schon wieder nicht funktionieren eben weil das Wörterbuch am Ende nur *ein* Schlüssel/Wert-Paar enthält:

Code: Alles auswählen

In [204]: S = {"NEW":{"Element01 ":1, "Element02 ":2}, "NEW":{"Element01 ":3, "Element02 ":4}, "NEW":{"Element01 ":5, "Element02 ":6}}

In [205]: S[(S.keys())[1]]["Element01 "]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

IndexError: list index out of range

In [206]: len(S)
Out[206]: 1

In [207]: S
Out[207]: {'NEW': {'Element01 ': 5, 'Element02 ': 6}}
Du solltest Dir keine Python-Shell-Sitzungen ausdenken sondern das mal tatsächlich ausprobieren.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@alle: sorry es war kein absicht. aber eine Antwort auf meine Frage gibt es bis jetzt immer noch nicht!
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Dann stell eine Frage die man beantworten kann...
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

wenn du die Frage nicht beantworten kannst, dann bleib bitte weg!
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Achso, ich dachte du hättest die Antwort schon heraus gelesen:
zizou2981 hat geschrieben:meine Frage ist, ob das Dictionary so sein sollte: {"NEW":{"Element01 ":1, "Element02 ":2}, "NEW":{"Element01 ":3, "Element02 ":4}, "NEW":{"Element01 ":5, "Element02 ":6}}
Die Antwort ist: Nein

Und irgendwann solltest du dein Problem erklären wenn du es nicht selbst gelöst bekommst, und nicht durch schlechte Manieren auffallen.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

ich habe es jetzt gelöst. Außer BlackJack: steckt euch die Antwort irgendwohin!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

zizou2981 hat geschrieben:ich habe es jetzt gelöst.
Das ist schön für dich.

Wir hätten dir auch gerne dabei geholfen, aber du warst leider nicht in der Lage das Problem sinnvoll zu beschreiben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

zizou2981 hat geschrieben:ich habe es jetzt gelöst.
Und wie hast du das jetzt gelöst? Wohl kaum mit einen normalen Dictionary.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

zizou2981 hat geschrieben:ich habe es jetzt gelöst. Außer BlackJack: steckt euch die Antwort irgendwohin!
Ich finde Dein Verhalten ziemlich unhöflich und kindisch! Glaubst Du auf diese Weise wirst Du in Zukunft noch Hilfe von Leuten hier bekommen? Solche Kommentare bleiben durchaus länger im Gedächtnis...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@Leonidas: das Programm gibt hier eine Liste von Dictionarys und die Zahlen 0, 1 und 2 sind die indexe der Dictionarys.

Code: Alles auswählen

[{Element01 : 1 , Element02: 2}, {Element01 : 3,  Element02 : 4}, ....]
@Hyperion: meine Aussage war nicht an alle sondern an einige Idioten gerichtet, die nach zwei selbst entwickelte Methoden (wahrscheinlich um 1+1 zu rechnen) gedacht haben, dass sie die Python-Götte sind. Glaub mir statt das Kommentar zu schreiben hätte ich ihnen auch liebe was auf die Fresse gegeben und das in einer While-Schleife mit einem Timeout von 60min und zwar ohne break. Also wer nicht helfen möchte, der kann seine Hilfe sparen, und danke an alle, die versucht haben zu helfen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Oh ja, es ist weit besser nur manche statt allen beleidigen zu wollen :roll:

Statt Leuten zu drohen ihnen auf die "Fresse [zu] geben" solltest du lieber nochmal deine Frage lesen, ob sie denn wirklich zu beantworten ist oder ob gar erkennbar ist was du eigentlich sagen willst.

Mir ist es jedenfalls nicht klar. Aber vielleicht bin ich bloß einer dieser "Idioten".

Auch wenn ich nicht glaube, dass du es brauchst (hat man ein dict mit aufsteigenden Integer Schluesseln, will man meist eine Liste), werfe ich mal OrderedDict in den Raum: http://docs.python.org/library/collecti ... rderedDict
BlackJack

@zizou2981: Alle die geantwortet haben sind wohl über 1+1 hinaus und ich sehe auch nicht ganz ein warum ich von Deinem schlechten Benehmen ausgenommen bin. Ich habe grundsätzlich das gleiche geantwortet wie die anderen: Deine Quelltexte/Aussagen stimmten einfach nicht mit dem tatsächlichen Verhalten von Python überein. Und so wirklich verstanden was für ein Problem *eigentlich* gelöst werden sollte, habe ich auch noch nicht. Aber das Du beleidigend wirst und mutig mit körperlicher Gewalt drohst — was hinter einer Tastatur und einem Monitor und mit dem Internet dazwischen irgendwie hilflos niedlich wirkt — habe ich verstanden.

Du sagst wer Dir nicht helfen will soll nicht antworten — wie wäre es wenn Du einfach keine Fragen stellst, wenn Du keine Hilfe möchtest. ;-)
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@cofi: danke für den Link und du bist bestimmt kein Idiot, denn du hast nicht Gott gespielt :wink:
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Für mich wäre das Verhalten dieses Typs ja schon fast ein Kick-Grund. Stimmungsvergiftende Trolls gibt's ja öfter mal, aber im Regelfall bedrohen die keine User. Er schon.
Benutzeravatar
zizou2981
User
Beiträge: 59
Registriert: Donnerstag 23. Juni 2011, 21:46

@BlackJack: wenn du dazu gehören willst, dann habe ich nichts dagegen :wink:
und keine Sorge, ich werde auch keine Fragen mehr hier stellen. 99,9999% von dem, was ich bis jetzt programmiert habe, habe ich in Bücher und experten Seiten gelesen und nicht in diesem Forum.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

zizou2981 hat geschrieben:Also wer nicht helfen möchte, der kann seine Hilfe sparen, und danke an alle, die versucht haben zu helfen.
Versucht haben es alle. Du warst der einzige der versucht hat das ganze zu torpedieren.

Der von dir angegebene Code mit der Ausgabe funktioniert einfach nicht.

Code: Alles auswählen

>>> S = {"NEW":{"Element01 ":1, "Element02 ":2}, "NEW":{"Element01 ":3, "Element02 ":4}, "NEW":{"Element01 ":5, "Element02 ":6}}
>>> S[(S.keys())[1]]["Element01 "]
3
Versuchst du jetzt uns dafür verantwortlich zu machen, dass du offensichtlich falsche Angaben gemacht hast? Natürlich ist es einfacher die Schuld bei anderen zu suchen. Ein Fall von derartiger Realitätsverweigerung spricht allerdings Bände.
Gesperrt