Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 7, 2014 15:53:39

kripton3000
Зарегистрирован: 2013-11-15
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Создать словарь

Имею данные

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

ЧЯДНТ?

Отредактировано kripton3000 (Фев. 7, 2014 15:56:53)

Офлайн

#2 Фев. 7, 2014 17:40:16

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Создать словарь

data.splitlines()
['', 'rules:      evdev', 'model:      pc105', 'layout:     us,ru', 'variant:    ,', 'options:    grp:alt_shift_toggle,grp_led:scroll']



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Фев. 7, 2014 18:15:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Создать словарь

>>> 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()



Отредактировано py.user.next (Фев. 7, 2014 18:18:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version