> From: oscar.j.benja...@gmail.com > Date: Thu, 21 Jan 2016 11:02:40 +0000 > To: ben+pyt...@benfinney.id.au > Subject: Re: [Tutor] Why is an OrderedDict not sliceable? > CC: tutor@python.org > > On 21 January 2016 at 09:19, Ben Finney <ben+pyt...@benfinney.id.au> wrote: > > Albert-Jan Roskam <sjeik_ap...@hotmail.com> writes: > > > >> Why is an OrderedDict not sliceable? > > > > Because slicing implies index access. The built-in ‘dict’ and > > ‘collections.OrderedDict’ both do not support indexed access:: > > According to a narrow definition of indexed access. I would say that > d[k] is index access even if d is a dict and k a key. > > Albert-Jan I guess what you want is this: > > from collections import OrderedDict > > class SliceableOrderedDict(OrderedDict): > def __getitem__(self, sl): > if isinstance(sl, slice): > keys = list(self) > keyslice = slice( > None if sl.start is None else keys.index(sl.start), > None if sl.stop is None else keys.index(sl.stop), > sl.step > ) > newitems = ((k, self[k]) for k in keys[keyslice]) > return SliceableOrderedDict(newitems) > else: > return super().__getitem__(sl) That looks interesting. I will check this out tomorrow at work. If I read it correctly this is indeed exactly what I meant. Thank you!!
> I guess that the authors of OrderedDict just didn't really consider > this to be very useful. Apart from having ordered iteration > OrderedDict is not really that deeply thought out. There's a thread on > python-ideas about the inconsistent behaviour of the keys and values > views and equality comparison of OrderedDicts on python-ideas at the > moment: > > https://mail.python.org/pipermail/python-ideas/2015-December/037472.html As I said in a prior email: That is SCARY! Should I just avoid OrderedDict like the plague? > -- > Oscar > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor