如何将MultiDict转换为嵌套字典

Kyl*_*ley 10 python nested nested-forms webob

我想将一个POST从Webob MultiDict转换为嵌套字典.例如

所以从POST:

'name=Kyle&phone.number=1234&phone.type=home&phone.number=5678&phone.type=work'
Run Code Online (Sandbox Code Playgroud)

多元化;

[('name', 'Kyle'), ('phone.number', '1234'), ('phone.type', 'home'), ('phone.number', '5678'), ('phone.type', 'work')]
Run Code Online (Sandbox Code Playgroud)

到嵌套字典

{'name': 'Kyle',
 'phone': [
  {
    'number': '12345',
    'type': 'home',
  },{
    'number': '5678',
    'type': 'work',
  },
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑

我最终variable_decode从Will发布的formencode包中提取了该方法.唯一需要的改变是明确列表,例如

'name=Kyle&phone-1.number=1234&phone-1.type=home&phone-2.number=5678&phone-2.type=work'
Run Code Online (Sandbox Code Playgroud)

哪个更好有很多原因.

Wil*_*ill 10

如果你安装了formencode或者可以安装它,请查看他们的variabledecode模块