Da in CPython 3.6 dicts bestellt werden (ich weiß es nicht garantiert ist - dennoch fantastisch zu verwenden), so erwartete ich das folgende dict Verständnis um den Auftrag zu erhalten:CPython 3.6 dict Ordnung in dict Verständnis
# attempt to get only specific k:v from dict jrn_blocks in order
jrn_blocks = {"header":0, "open":1, "detached":2, "rps_command":3, "close_no_save":4}
recip = "header,open,close_no_save"
{k: v for k, v in jrn_blocks.items() if k in recip}
# -> gives me: {'close_no_save': 4, 'header': 0, 'open': 1}
# -> I would expect: {'header': 0, 'open': 1, 'close_no_save': 4}
Wenn ich benutze nur eine Liste Verständnis auf Artikel Tupeln, um aufbewahrt wird:
[(k, v) for k, v in jrn_blocks.items() if k in recip]
# -> gives me: [('header', 0), ('open', 1), ('close_no_save', 4)]
Sobald ich versuche, ein Wörterbuch aus diesen Tupeln zu erstellen, wird der Auftrag wieder verloren:
dict([(k, v) for k, v in jrn_blocks.items() if k in recip])
# -> gives me: {'close_no_save': 4, 'header': 0, 'open': 1}
Ist das erwartete Verhalten?
Gibt es eine alphabetische Sortierung im Hintergrund?
Oder gibt es eine andere elegante Möglichkeit, diese Art von "dict-Filter" zu machen, während die Ordnung erhalten bleibt?
Vielen Dank im Voraus!