On Thu, Jul 30, 2020 at 11:55 AM Christopher Barker <python...@gmail.com> wrote:
> > smaller_dict = dict(islice(large_dict.items(), 0, 255)) > well, beauty is in the eye of the beholder, of course. But really, you > think it's pretty to import itertools, then make a function call, for > what's very much a slicing operation? > In your post that introduced that,that is *exactly* what I thought of when you first described the issue, before I read down to your solution. It took a fraction of a second to think of for me. It *is* slightly verbose. What do you think about this in current Python: >>> large = {i:i**2 for i in range(1000)} >>> import sys >>> from itertools import islice >>> class IterSlicer: ... def __getitem__(self, what): ... it, sl = what ... return islice(it, sl.start or 0, sl.stop or sys.maxsize, sl.step or 1) ... >>> IS = IterSlicer() >>> dict(IS[large.items(), 3:10:2]) {3: 9, 5: 25, 7: 49, 9: 81} >>> from itertools import count >>> set(IS[count(), 10:100:9]) {64, 37, 73, 10, 46, 82, 19, 55, 91, 28} Potentially IterSlicer, or IS, could live in itertools (or more likely more-itertools) just to provide a short way to use slice notation with an arbitrary iterable... not limited to dict.items(). -- The dead increasingly dominate and strangle both the living and the not-yet born. Vampiric capital and undead corporate persons abuse the lives and control the thoughts of homo faber. Ideas, once born, become abortifacients against new conceptions.
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/OEO7XAM4FJM2742M4AWJVEEHBGIKZPJV/ Code of Conduct: http://python.org/psf/codeofconduct/