Extract subset of key-value pairs from Python dictionary object?

I have a big dictionary object that has several key value pairs (about 16), but I am only interested in 3 of them. What is the best way (shortest/efficient/most elegant) to achieve that?

The best I know is:

    bigdict = {'a':1,'b':2,....,'z':26} 
    subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}

I am sure there is a more elegant way than this. Ideas?

You could try:

    dict((k, bigdict[k]) for k in ('l', 'm', 'n'))

... or in Python 3 Python versions 2.7 or later (thanks toFábio Diniz for pointing that out that it works in 2.7 too) :

    {k: bigdict[k] for k in ('l', 'm', 'n')}

Update: AsHåvard S points out, I'm assuming that you know the keys are going to be in the dictionary - see his answer if you aren't able to make that assumption. Alternatively, as timbo points out in the comments, if you want a key that's missing in bigdict to map to None, you can do:

    {k: bigdict.get(k, None) for k in ('l', 'm', 'n')}

If you're using Python 3, and you only want want keys in the new dict that actually exist in the original one, you can use the fact the view objects implement some set operations:

    {k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}

From: stackoverflow.com/q/5352546