> 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

Reply via email to