Accessing items in an collections.OrderedDict by index

collections, dictionary, ordereddictionary, python, python-3.x

Solution

If its an `OrderedDict()` you can easily access the elements by indexing by getting the tuples of (key,value) pairs as follows

>>> import collections
>>> d = collections.OrderedDict()
>>> d['foo'] = 'python'
>>> d['bar'] = 'spam'
>>> d.items()
[('foo', 'python'), ('bar', 'spam')]
>>> d.items()[0]
('foo', 'python')
>>> d.items()[1]
('bar', 'spam')

Note for Python 3.X

`dict.items` would return an iterable dict view object rather than a list. We need to wrap the call onto a list in order to make the indexing possible

>>> items = list(d.items())
>>> items
[('foo', 'python'), ('bar', 'spam')]
>>> items[0]
('foo', 'python')
>>> items[1]
('bar', 'spam')

Problem

Lets say I have the following code: ``` import collections d = collections.OrderedDict() d['foo'] = 'python' d['bar'] = 'spam' ``` Is there a way I can access the items in a numbered manner, like: ``` d(0) #foo's Output d(1) #bar's Output ```

Original source