Форум сайта python.su
0
Привет, есть примерно такой словарь
{
"dw-table": {
"filters": "null",
"column-vis": ["true", "true", "true", "true", "true", "true"],
"disp-len": "15"
},
"st-table": {
"filters": {
"group": "5"
},
"disp-len": "100",
"column-vis": ["true", "true", "true", "true", "true"]
},
"ls-table": {
"filters": {
"group": "0"
},
"column-vis": ["true", "true", "true", "true", "true", "true", "true", "true", "true", "true"],
"disp-len": "15"
},
"proj-table": {
"filters": {
"group": "1",
"links_count": {
"begin": "1",
"end": "",
"type": "range"
}
}
},
"lsp-table": {
"filters": {
"group": "0",
"links_count": "null"
}
}
}["true", "true", "true", "true", "true", "true"]
/lsp-table/filters/group = 10
/dw-table/column-vis = ['true', 'false']
Отредактировано int_0x80 (Сен. 27, 2012 16:49:42)
Офлайн
5
как вариант получить можно так. как установить вариант из первой строки гугла http://habrahabr.ru/qa/17700/
http://ideone.com/Ej3Io
Отредактировано d1ffuz0r (Сен. 27, 2012 17:59:59)
Офлайн
857
>>> d = { ... "dw-table": { ... "filters": "null", ... "column-vis": ["true", "true", "true", "true", "true", "true"], ... "disp-len": "15" ... }, ... "st-table": { ... "filters": { ... "group": "5" ... }, ... "disp-len": "100", ... "column-vis": ["true", "true", "true", "true", "true"] ... }, ... "ls-table": { ... "filters": { ... "group": "0" ... }, ... "column-vis": ["true", "true", "true", "true", "true", "true", "true", "true", "true", "true"], ... "disp-len": "15" ... }, ... "proj-table": { ... "filters": { ... "group": "1", ... "links_count": { ... "begin": "1", ... "end": "", ... "type": "range" ... } ... } ... }, ... "lsp-table": { ... "filters": { ... "group": "0", ... "links_count": "null" ... } ... } ... } >>> >>> def getval(d, s): ... for i in s.lstrip('/').split('/'): ... d = d[i] ... return d ... >>> def setval(d, s, val): ... tmp = s.lstrip('/').split('/') ... left, right = tmp[:-1], tmp[-1] ... for i in left: ... d = d[i] ... d[right] = val ... >>> print(getval(d, '/dw-table/column-vis')) ['true', 'true', 'true', 'true', 'true', 'true'] >>> setval(d, '/dw-table/column-vis', ['true', 'true']) >>> print(getval(d, '/dw-table/column-vis')) ['true', 'true'] >>>
Офлайн
0
А как в setval автоматически создавать узлы, в случае их отсутствия?
Офлайн
857
сделай отдельную функцию, прокладывающую путь
Офлайн