Namedtuple problem #32.11.d
Richard Moseley
phyllismoseley3 at gmail.com
Tue Jun 6 11:16:13 EDT 2017
On 06/06/17 13:29, Neil Cerutti wrote:
> On 2017-06-06, Deborah Swanson <python at deborahswanson.net> wrote:
>> I have a list of namedtuples:
>>
>> [{Record}(r0=v0, r1=v1,...,r10=v10,r11='',...r93='')
>> . . .
>> {Record}(r0=v0, r1=v1,...,r10=v10,r11='',...r93='')]
>>
>> In the first section of code, I process some of the first 10
>> columns (r0=v0, r1=v1,...,r10=v10), and place the results in
>> blank columns, also in the first 10 columns.
> I too have sometimes started with a namedtuple and then found I
> needed to make changes to the records. I typically abandon
> namedtuple at this point, after only one bad experience trying to
> work around my choice of container.
>
In a package that I'm working on that enables access natively to legacy
C-ISAM files, I've found that I need to create a form of a namedtuple
that makes use of descriptors to access each of the fields within a
record using attribute lookup, but to also create the record object at
runtime using a description of the fields read from another file (C-ISAM
works by using offsets within a record and does not natively store a
mapping between name and offset). I found that using a metaclass to
store the fields in a OrderedDict enabled me to embed a namedtuple to
return the record back to the rest of the package. The code can be found
in pyisam/table/record.py from http://github.com/rpmoseley/pyisam.git.
The code is written for 3.x but the code path for versions before 3.6
should work for 2.7.
More information about the Python-list
mailing list