How to enter multiple, similar, dictionaries?

Chris Green cl at isbd.net
Mon Dec 11 11:50:24 EST 2023


Jon Ribbens <jon+usenet at unequivocal.eu> wrote:
> On 2023-12-11, Chris Green <cl at isbd.net> wrote:
> > Chris Green <cl at 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!
> 
> adccfg = [
>     dict(zip(('abbr', 'dev', 'input', 'name'), row))
>     for row in (
>         ('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'),
>     )
> ]

Neat, I like that, thank you.

-- 
Chris Green
·


More information about the Python-list mailing list