In Python how to obtain a partial view of a dict?

import itertools 
def glance(d):
    return dict(itertools.islice(d.iteritems(), 3))

>>> x = {1:2, 3:4, 5:6, 7:8, 9:10, 11:12}
>>> glance(x)
{1: 2, 3: 4, 5: 6}

However:

>>> x['a'] = 2
>>> glance(x)
{1: 2, 3: 4, u'a': 2}

Notice that inserting a new element changed what the "first" three elements were in an unpredictable way. This is what people mean when they tell you dicts aren't ordered. You can get three elements if you want, but you can't know which three they'll be.


Edit:

in Python 3.x: Without using libraries it's possible to do it this way. Use method:

.items()

which returns a list of dictionary keys with values.

It's necessary to convert it to a list otherwise an error will occur 'my_dict' object is not subscriptable. Then convert it to the dictionary. Now it's ready to slice with square brackets.

dict(list(my_dict.items())[:3])

I know this question is 3 years old but here a pythonic version (maybe simpler than the above methods) for Python 3.*:

[print(v) for i, v in enumerate(my_dict.items()) if i < n]

It will print the first n elements of the dictionary my_dict


Kinda strange desire, but you can get that by using this

from itertools import islice

# Python 2.x
dict(islice(mydict.iteritems(), 0, 2))

# Python 3.x
dict(islice(mydict.items(), 0, 2))

or for short dictionaries

# Python 2.x
dict(mydict.items()[0:2])

# Python 3.x
dict(list(mydict.items())[0:2])