On 2023-12-11 15:57, Chris Green via Python-list wrote:
Chris Green <c...@isbd.net> wrote:
Is there a way to abbreviate the following code somehow?

    lv = {'dev':'bbb', 'input':'1', 'name':'Leisure volts'}
    sv = {'dev':'bbb', 'input':'0', 'name':'Starter volts'}
    la = {'dev':'bbb', 'input':'2', 'name':'Leisure Amps'}
    sa = {'dev':'bbb', 'input':'3', 'name':'Starter Amps'}
    bv = {'dev':'adc2', 'input':0, 'name':'BowProp Volts'}

It's effectively a 'table' with columns named 'dev', 'input' and
'name' and I want to access the values of the table using the variable
name.

Or, more sensibly, make the above into a list (or maybe dictionary)
of dictionaries:-

adccfg = [
     {'abbr':'lv', 'dev':'bbb', 'input':'1', 'name':'Leisure volts'},
     {'abbr':'sv', 'dev':'bbb', 'input':'0', 'name':'Starter volts'},
     {'abbr':'la', 'dev':'bbb', 'input':'2', 'name':'Leisure Amps'},
     {'abbr':'sa', 'dev':'bbb', 'input':'3', 'name':'Starter Amps'},
     {'abbr':'bv', 'dev':'adc2', 'input':0, 'name':'BowProp Volts'}
]

This pickles nicely, I just want an easy way to enter the data!

I could, obviously, store the data in a database (sqlite), I have some
similar data in a database already but the above sort of format in
Python source is more human readable and accessible.  I'm just looking
for a less laborious way of entering it really.

How about:

keys = ['abbr', 'dev', 'input', 'name']
adccfg = [
    ('lv', 'bbb', '1', 'Leisure volts'),
    ('sv', 'bbb', '0', 'Starter volts'),
    ('la', 'bbb', '2', 'Leisure Amps'),
    ('sa', 'bbb', '3', 'Starter Amps'),
    ('bv', 'adc2', '0', 'BowProp Volts'),
]
adccfg = [dict(zip(keys, row)) for row in adccfg]

or even:

keys = ['abbr', 'dev', 'input', 'name']
adccfg = '''\
lv,bbb,1,Leisure volts
sv,bbb,0,Starter volts
la,bbb,2,Leisure Amps
sa,bbb,3,Starter Amps
bv,adc2,0,BowProp Volts
'''
adccfg = [dict(zip(keys, line.split(','))) for line in adccfg.splitlines()]

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to