I have a proposal for a literal syntax for OrderedDicts which is just replacing the braces with square brackets:<div><br></div><div>[&#39;a&#39;: 1,&#39;b&#39;: 2] == OrderedDict([(&#39;a&#39;, 1),(&#39;b&#39;, 2)])</div><div>

<br></div><div>OrderedDict literals would follow:</div><div><br></div><div>[x : x for x in foo()] == OrderedDict([(x,x) for x in foo()])</div><div><br></div><div>The rationale for the syntax is that it follows the set / list / dict precedent of curly braces for unordered collections, square brackets for ordered collections, and otherwise aping the normal dict syntax.</div>

<div><br></div><div>OrderedDict is arguable one of the best recent additions to the Python standard library. Looking at the py3k codebase, it seems like adding OrderedDicts as a native C implementation at the same time as introducing a literal syntax with all the additions to the grammar and ast makes sense. A native implementation would make the memory usage closer to normal dicts (plus two pointers per element) but be potentially faster for many operations than even regular dictionaries and certainly much, much faster than the current Python-only implementation of OrderedDict.</div>

<div><br></div><div>I&#39;ve started working on this in my free time, but I&#39;m not a seasoned CPython hacker. Any feedback or pointers would be helpful. Originally, I was planning on creating a patch first before suggesting this to the mailing list, but given the scope of the feature and the number of concerns I figure I might as well test the waters first.</div>
<div><br></div><div>Even if the idea of a literal syntax is dismissed, I think a C implementation of OrderedDict would be a great addition and I&#39;d love to help.</div>