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
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/