Найти - Пользователи
Полная версия: Создать словарь
Начало » Python для экспертов » Создать словарь
1
kripton3000
Имею данные

data = """
rules:      evdev
model:      pc105
layout:     us,ru
variant:    ,
options:    grp:alt_shift_toggle,grp_led:scroll
"""

хочу получить словарь
{'layout': ‘us,ru’,
‘model’: ‘pc105’,
‘options’: ‘grp:alt_shift_toggle,grp_led:scroll’,
‘rules’: ‘evdev’,
‘variant’: ‘,’}

Делаю так:

dict((a, b.strip()) for a, b in
                 (item.split(":") for item in
                  data.splitlines()))

Получаю:
dict((a, b.strip()) for a, b in
ValueError: too many values to unpack

ЧЯДНТ?
Master_Sergius
data.splitlines()
['', 'rules:      evdev', 'model:      pc105', 'layout:     us,ru', 'variant:    ,', 'options:    grp:alt_shift_toggle,grp_led:scroll']
py.user.next
>>> data = """
... rules:      evdev
... model:      pc105
... layout:     us,ru
... variant:    ,
... options:    grp:alt_shift_toggle,grp_led:scroll
... """
>>> 
>>> d = {k.strip():v.strip() for k, v in
...      (i.split(':', 1) for i in data.splitlines() if i.strip())}
>>> 
>>> print(d)
{'options': 'grp:alt_shift_toggle,grp_led:scroll', 'rules': 'evdev', 'model': 'pc105', 'variant': ',', 'layout': 'us,ru'}
>>>
вообще, лучше почистить сначала, чтобы не нужно было писать if i.strip()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB