Namedtuples problem
Deborah Swanson
python at deborahswanson.net
Thu Feb 23 18:00:53 EST 2017
> -----Original Message-----
> From: Erik [mailto:python at lucidity.plus.com]
> Sent: Thursday, February 23, 2017 2:09 AM
> To: python at deborahswanson.net; python-list at python.org
> Subject: Re: Namedtuples problem
>
>
> Hi,
>
> On 23/02/17 09:38, Deborah Swanson wrote:
> > group[[idx][records_idx[label]]]
> > gets an IndexError: list index out of range
>
> [snip]
>
> > Can anyone see why I'm getting this Index error? and how to fix it?
>
> It looks to me like you are indexing into a single-element
> list that you
> are creating using the literal list syntax in the middle of
> the expression.
Actually, group is essentially a 2-element list. Each group has a list
of rows, and each row has a set of fields. group has to be indexed by
row index and field index. (This is a namedtuple configuration.)
The weirdness is that
group[0][4]
gets the right answer, but
group[[idx][records_idx[label]]],
where idx = 0 and records_idx[label]] = 4
gets the IndexError.
> If we were to break the expression into parts to make it a
> bit simpler
> to refer to discuss:
>
> ridx = records_idx[label]
> group[[idx][ridx]]
>
> You can now more easily see that 'group' is being indexed by the
> expression "[idx][ridx]". What does that mean?
>
> [idx] is creating a single-element list using literal list
> syntax. This
> is then indexed using 'ridx' (using, perhaps confusingly, the
> exact same
> syntax to do a different thing).
>
> The result of *that* expression is then being used to index
> 'group', but
> it won't get that far because you'll get the exception if 'ridx' is
> anything but zero.
>
> So the initial problem at least is the extra [] around 'idx' which is
> creating a list on the fly for you.
>
> E.
>
More information about the Python-list
mailing list