<p dir="ltr">On Apr 4, 2014 2:54 AM, "Terry Reedy" <<a href="mailto:tjreedy@udel.edu">tjreedy@udel.edu</a>> wrote:<br>
><br>
> This proposal strikes me as conceptually disordered. A set is not ordered. An ordered set would be a sequence, and if you want a sequence, the best thing is to use a sequence object.  A dict is a set of key,value pairs. If you want an ordered sequence of key, value pairs, use a sequence. OrderedDicts were added for situations where that is not possible because a pre-existing api requires a mapping object, even though you might prefer to use a sequence.</p>

<p dir="ltr">With OrderedDict it's about having a mapping and the order of the keys in one data structure.  A sequence of pairs does not an ordered mapping make, though they may contain the same data.</p>
<p dir="ltr">><br>
> Passing a sequence of key,value pairs is a case that requires a mapping. If a function attends to the order of key,value pairs it receives, it should receive a sequence of such.<br>
><br>
> **kwds in a call is a substitute for writing out unordered key=value specifications. The function may or may not have **kargs in its signature and if it does, the kargs received may or may not be equal to the kwds passed.</p>

<p dir="ltr">As someone else noted, you write out an *ordered* key=value specification and that information is lost.  In the ** unpacking case, any order information in the unpacked object is likewise lost.  This proposal is all about preserving that order information in some way without requiring the caller to extract the order information manually and passing it in separately.</p>

<p dir="ltr">-eric</p>