Mailing List Archive

How to enter multiple, similar, dictionaries?
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.

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.

--
Chris Green
·
--
https://mail.python.org/mailman/listinfo/python-list
Re: How to enter multiple, similar, dictionaries? [ In reply to ]
Chris Green <cl@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.
>
--
Chris Green
·
--
https://mail.python.org/mailman/listinfo/python-list
Re: How to enter multiple, similar, dictionaries? [ In reply to ]
On 2023-12-11, Chris Green <cl@isbd.net> wrote:
> Chris Green <cl@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'),
)
]
--
https://mail.python.org/mailman/listinfo/python-list
Re: How to enter multiple, similar, dictionaries? [ In reply to ]
Jon Ribbens <jon+usenet@unequivocal.eu> wrote:
> On 2023-12-11, Chris Green <cl@isbd.net> wrote:
> > Chris Green <cl@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
·
--
https://mail.python.org/mailman/listinfo/python-list
Re: How to enter multiple, similar, dictionaries? [ In reply to ]
On 2023-12-11, Chris Green via Python-list <python-list@python.org> 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.

Named tuples stored in a dictionary or list?

> 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.

--
https://mail.python.org/mailman/listinfo/python-list
Re: How to enter multiple, similar, dictionaries? [ In reply to ]
On 2023-12-11 15:57, Chris Green via Python-list wrote:
> Chris Green <cl@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
Re: How to enter multiple, similar, dictionaries? [ In reply to ]
On 11/12/2023 16.16, Chris Green 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.
>
> 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.
>

Maybe a dict of dicts:

tx = {lv: {'dev':'bbb', 'input':'1', 'name':'Leisure volts'},
sv: {'dev':'bbb', 'input':'0', 'name':'Starter volts'},
...}

Might have one or two advantages.

bye,

--

piergiorgio

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