我正在使用Pyramid来处理来自DataTable的ajax请求。请求参数的密钥传递方式如下:
'columns[0][search]', 'columns[1][search]', 'columns[0][data]', 'columns[0][data]'
有没有办法告诉金字塔(或其他python库)将这些请求参数解析为嵌套的dict,所以它看起来更像:
{'columns': {
'0': {'search': X, 'data': X},
'1': {'search': X, 'data': X},
}}
答案 0 :(得分:0)
这很有效。如果我可以将它作为一组嵌套的MultiDicts返回,那将是很好的,所以我可以继续使用getone()
和getall()
方法,但我似乎无法实例化MultiDicts来自金字塔。
def unflatten_multidict(multidict):
d = {}
for k in multidict.keys():
m = re.match(r'^([^\[\]]+)((?:\[[^\[\]]+\])+)', k)
if m:
attr = m.group(1)
lastd = d.setdefault(attr, {})
subkeys = re.findall(r'\[([^\[\]]+)\]', m.group(2))
for i, subkey in enumerate(subkeys):
if i < len(subkeys) - 1:
lastd = lastd.setdefault(subkey, {})
else:
lastd[subkey] = multidict.get(k)
else:
d[k] = multidict.get(k)
return d