On 10/12/2016 12:06 PM, Enguerrand Pelletier wrote:
Hi all,

It always bothered me to write something like this when i want to strip
keys from a dictionnary in Python:

a = {"foo": 1, "bar": 2, "baz": 3, "foobar": 42}
interesting_keys = ["foo", "bar", "baz"]

If the keys are hashable, this should be a set.

b = {k, v for k,v in a.items() if k in interesting_keys}

Test code before posting. The above is a set comprehension creating a set of tupes. For a dict, 'k, v' must be 'k:v'.

Wouldn't it be nice to have a syntactic sugar such as:

b = a.subset(interesting_keys)

It is pretty rare for the filter condition to be exactly 'key in explicit_keys'. If it is, one can directly construct the dict from a and explict_keys.

b = {k:a[k] for k in interesting_keys}

The syntactic sugar wrapping this would save 6 keypresses. Interesting_keys can be any iterable. To guarantee no KeyErrors, add 'if k in a'.

Terry Jan Reedy

Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to