sliciing dicts (was RE: More random python observations from a perl programmer)

aaron_watters at aaron_watters at
Fri Aug 20 09:26:49 EDT 1999

In article <001301beeacf$9819a560$712d2399 at tim>,
  "Tim Peters" <tim_one at> wrote:
> [tchrist]
> >> GOTCHA: (medium)
> >>     Slices in Python must be contiguous ranges of a sequence.
> >>     In Perl, there's no such restriction.
> [Michael Hudson]
> > At some point Python will probably support `extended slice syntax'
> > like so:
> >
> > range(0,10)[1:4:2] => [1,3]
> >
> > Numerical Python already does this.
> [tchrist]
> >> GOTCHA: (medium)
> >>     You can't slice dictionaries at all in Python.  In Perl, it's
> >>     easy to slice a hash, and just as sensible.
> [Michael Hudson]
> > Huh? What would that mean? There's no reason to suspect that the
> > of a dictionary are ordered.
> What Tom calls "slicing" here the NumPy folk would call gather/scatter
> subscripting.  A list can be used as an index, e.g.
>     thing[[7,2,3]] == [thing[7], thing[2], thing[3]]
> Perl has something like that; Python does not.

All of these things of course can be implemented using the
various python meta-hooks either at the Python or the C level.
They aren't intrinsic limitations of the Python interpreter,
just limitations of the standard dictionary/list/tuple

BTW, kjbuckets.kjDict's have a method called "dump" (with a dual
kjUndump function) where

    D.dump((x,)) --> D[x]
    D.dump((x,y,z)) --> (D[x], D[y], D[z])

Gadfly uses these features to quickly pack/unpack data in/out
of dictionary format either for indexing or archiving.

I really think you should get kjbuckets, Tom, it sounds like it's just
what you need for the Python app you are apparently working on. :)

   Aaron Watters


I forgot my mantra.

Sent via
Share what you know. Learn what you don't.

More information about the Python-list mailing list