Найти - Пользователи
Полная версия: Помощь с функцией для создания многомерного словаря из строки
Начало » Python для новичков » Помощь с функцией для создания многомерного словаря из строки
1
qwexak
Доброго времени суток, суть проблемы
хочу из кода
{'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


Спасибо.
Shaman
Лучше переписать
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)
qwexak
Спасибо
Shaman
Пожалуйста.
Нужно помнить, что все переменные - ссылки. Иногда это помогает, иногда помогает выстрелить в ногу.
qwexak
Недавно начал осваивать после PHP)
так вот там не ссылки
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