Seite 1 von 1

OrderedDict absolute Ordnung

Verfasst: Montag 17. Februar 2014, 21:18
von darktrym
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")

Re: OrderedDict absolute Ordnung

Verfasst: Montag 17. Februar 2014, 21:23
von 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.

Re: OrderedDict absolute Ordnung

Verfasst: Montag 17. Februar 2014, 21:31
von darktrym
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.

Re: OrderedDict absolute Ordnung

Verfasst: Montag 17. Februar 2014, 21:42
von pillmuncher
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'

Re: OrderedDict absolute Ordnung

Verfasst: Montag 17. Februar 2014, 22:10
von darktrym
Ja, danke, dass hatte ich auch vorher schon, hatte nur nicht funktioniert weil noch ein anderer Fehler drin war.