# 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