Newbie: Convert strings in nested dict to tuples

Peter Otten __peter__ at web.de
Tue Dec 22 18:22:59 EST 2015


KP wrote:

> I now know how to convert a string cont. coordinates to a tuple, but hwo
> can I do this?
> 
> Given
> 
> cfg = {'canvas': ('3840', '1024'),
>       'panel1': {'gpio': '1', 'id': '4', 'co': '0,0,1280,1024'},
>       'panel2': {'gpio': '2', 'id': '5', 'co': '1280,0,2560,1024'},
>       'panel3': {'gpio': '3', 'id': '6', 'co': '2560,0,3840,1024'}}
> 
> how can I transform cfg to
> 
> cfg = {'canvas': ('3840', '1024'),
>       'panel1': {'gpio': '1', 'id': '4', 'co': ('0','0','1280','1024')},
>       'panel2': {'gpio': '2', 'id': '5', 'co':
>       ('1280','0','2560','1024')}, 'panel3': {'gpio': '3', 'id': '6',
>       'co': ('2560','0','3840','1024')}}
> 
> Again, thanks for all help!

>>> cfg = {'canvas': ('3840', '1024'),
...       'panel1': {'gpio': '1', 'id': '4', 'co': '0,0,1280,1024'}, 
...       'panel2': {'gpio': '2', 'id': '5', 'co': '1280,0,2560,1024'},
...       'panel3': {'gpio': '3', 'id': '6', 'co': '2560,0,3840,1024'}}
>>> 
>>> for value in cfg.values():
...     if isinstance(value, dict):
...         value["co"] = tuple(value["co"].split(","))
... 
>>> import pprint
>>> pprint.pprint(cfg)
{'canvas': ('3840', '1024'),
 'panel1': {'co': ('0', '0', '1280', '1024'), 'gpio': '1', 'id': '4'},
 'panel2': {'co': ('1280', '0', '2560', '1024'), 'gpio': '2', 'id': '5'},
 'panel3': {'co': ('2560', '0', '3840', '1024'), 'gpio': '3', 'id': '6'}}





More information about the Python-list mailing list