OrderedDict absolute 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.
Antworten
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ich brauche ein Dictionary bei den die Ordnung so ist wie sie ihm übergebe(für eine Zusammenfassung gleicher Fälle bei Kommandozeilenparametern).
Deshalb habe ich gedacht ich übergib dem OrderedDict mein Dictionary. Klappt nur nicht, er sortierts trotzdem nach den Keys. Eine Idee wie es geht?

Code: Alles auswählen

additional_options = {"source":getcwd(), "resolution": (600, 800), 
                            "start": 0, 
                            "numsort": False, "footer": True,
                            "skipping": True, "depth": True, 
                            "splitting": True, "stretching": True, 
                            "reverse": True, "cropping": False, 
                            "skipping": True, "duplicating": True}

Code: Alles auswählen

for opt, arg in options:
        if opt == "--start":
            additional_options["start"] = int(arg)
        elif opt == "--resolution":
            additional_options["resolution"] = map(int, arg.split(",")) 
        elif opt == "--source":
            additional_options["source"] = arg
        elif opt in list(additional_options.keys())[3:]:
            additional_options[opt[2:]] = (arg.lower() == "on")
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@darktrym: Das Dictionary welches Du übergibst hat doch schon keine Ordnung und die Ordnung vom `OrderedDict` richtet sich nicht nach Werten oder den Werten von Schlüsseln sondern nach der Reihenfolge in der eingetragen wird.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Weiß ich, ich möchte aber die Ordnung, sprich so wie ich es angegeben habe, auch übernommen sehen im Dictionary. Damit ich dann später die Keys in einer Liste in der richtigen Reihenfolge habe.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

darktrym hat geschrieben:Weiß ich, ich möchte aber ...
Wir wissen was du möchtest. Aber vom Möchten wird sich die dict-Klasse nicht beeindrucken lassen. Du könntest allerdings statt eines normalen dicts, das du dann vergeblich umzuwandeln versuchst, gleich ein OrderedDict verwenden:

Code: Alles auswählen

>>> from collections import OrderedDict
>>> od = OrderedDict([['a', 'b'], ['c', 'd'], ['e', 'f']])
>>> od
OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])
>>> od['a']
'b'
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ja, danke, dass hatte ich auch vorher schon, hatte nur nicht funktioniert weil noch ein anderer Fehler drin war.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten