Quantcast
Viewing all articles
Browse latest Browse all 39

Answer by Chris Krycho for Python OrderedDict iteration

From the docs:

The OrderedDict constructor and update() method both accept keyword arguments, but their order is lost because Python’s function call semantics pass-in keyword arguments using a regular unordered dictionary.

So initialization loses the ordering, because it's basically calling a constructor with **kwargs.

Edit: In terms of a solution (not just an explanation)—as pointed out in a comment by the OP, passing in a single list of tuples will work:

>>> from collections import OrderedDict>>> spam = OrderedDict([('s',(1,2)),('p',(3,4)),('a',(5,6)),('m',(7,8))])>>> for key in spam:...     print(key)...spam>>> for key in spam.keys():...     print(key)...spam

This is because it's only getting a single argument, a list.


Viewing all articles
Browse latest Browse all 39

Trending Articles