Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 15, 2013 18:09:22

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

Помощь с функцией для создания многомерного словаря из строки

Доброго времени суток, суть проблемы
хочу из кода

{'name_first': ['abc'], 'name_last': ['def'], 'name_info_login': ['aaa1'], 'name_info_descr': ['aaa2'],'email':['abc@def.gh']}
{
  'name': {
    'first': 'aaaa',
    'last': 'bbbb',
    'info': {
      'login': 'aaa1',
      'desct': 'aaa2'
    },
    'email': 'abc@def.gh'
  }
}

Получилось написать только для перового “уровня”
def parse_post(post):
out = {}
for (key, value) in post.items():
if value[0] == '': continue
if '_' in key:
key = key.split('_')
if not key[0] in out: out[key[0]] = {} #это две строчки нужно както оптимизировать)
out[key[0]][key[1]] = [value[0]] #это две строчки нужно както оптимизировать)
else:
out[key] = [value[0]]
return out


Спасибо.

Отредактировано qwexak (Июнь 15, 2013 18:16:12)

Офлайн

#2 Июнь 15, 2013 18:57:25

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Помощь с функцией для создания многомерного словаря из строки

Лучше переписать

din = {'name_first': ['abc'], 'name_last': ['def'], 'name_info_login': ['aaa1'], 'name_info_descr': ['aaa2'],'email':['abc@def.gh']}
def parse_post(post):
    out = {}
    for ki, v in post.viewitems():
        td, ln = out, ki.split('_')
        for k in ln[:-1]:
            td = td.setdefault(k, {})
        td[ln[-1]] = v[0]
    return out
print parse_post(din)

Отредактировано Shaman (Июнь 15, 2013 19:11:06)

Офлайн

#3 Июнь 15, 2013 19:24:18

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

Помощь с функцией для создания многомерного словаря из строки

Спасибо

Офлайн

#4 Июнь 15, 2013 19:35:31

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Помощь с функцией для создания многомерного словаря из строки

Пожалуйста.
Нужно помнить, что все переменные - ссылки. Иногда это помогает, иногда помогает выстрелить в ногу.

Офлайн

#5 Июнь 15, 2013 19:50:38

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

Помощь с функцией для создания многомерного словаря из строки

Недавно начал осваивать после PHP)
так вот там не ссылки

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version