These are all far too easy to do with comprehensions to merit new methods
or stdlib functions.
m = {'a': 123, 'b': 456, 'c': 789}
>
m.except(('a', 'c')) # {'b': 456}
> m.only(('b', 'c')) # {'b': 456, 'c': 789}
> m.values_at(('a', 'b')) # [123, 456]
>
{k:m[v] for k in m if k not in ['a','c']}
{k:m[v] for k in m if k in ('b','c')}.
[m[k] for k in m if k in {'a', 'b'}]
The existing versions are a few characters longer, but far more general
when you want minor variations. Moreover, I have very rarely wanted to do
ANY of the things described by these hypothetical methods.
That said, I think maybe something extending PEP 584 could be reasonable,
but I'm not quite sure of the semantics.
E.g., we might provide additional set-like operators for dicts.
>>> m | {'a':"Newval"} # We have this now
{'a': 'Newval', 'b': 456, 'c': 789}
>>> m - {'a'} # Would rightval be a set or dict though?!
{'b': 456, 'c': 789}
>>> m & {'a', 'b'} # Same question, but set feels better, I think
{'a': 'Newval', 'b': 456}
--
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons. Intellectual property is
to the 21st century what the slave trade was to the 16th.
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/B23J2ABBFOOXQYHYSVHX7ILJZRRE2IKH/
Code of Conduct: http://python.org/psf/codeofconduct/