我有一组数据,看起来与此类似:转换列表中嵌套的列表和类型的字典
[ {"name":"item.key" , "value":"value"},
{"name":"item.key2" , "value":"value2"},
{"name":"item.list.0" , "value":"listValue1"},
{"name":"item.list.1" , "value":"listValue2"},
{"name":"item.list.2" , "value":"listValue3"},·
{"name":"item.list2.0.key1" , "value":"list2Key1Value"},
{"name":"item.list2.0.key2" , "value":"list2Key2Value"},
{"name":"item.list2.0.key3" , "value":"list2Key3Value"},·
{"name":"item.list3.0.key1" , "value":"list3Key1Value"},
{"name":"item.list3.0.key2" , "value":"list3Key2Value"},
{"name":"item.list3.0.key3" , "value":"list3Key3Value"},
{"name":"other.key" , "value":"otherKeyValue"}
]
名字被从名单包含http://stardict.sourceforge.net/Dictionaries.php下载和嵌套数据夷为平地。我现在想把它重新放回到字典和列表中(如适用)。
到目前为止,我有这样的:
obj = {}
def addObj(o, path, value):
if len(path) > 1:
o = o.setdefault(path.pop(0), {})
addObj(o, path, value)
else:
o[path.pop(0)] = value
for item in data:
parts = item['name'].split(".")
addObj(obj, parts, item['value'])
将产生这样的:
{'item': {
'key': 'value',
'key2': 'value2',
'list': {
'0': 'listValue1',
'1': 'listValue2',
'2': 'listValue3'},
'list2': {
'0': {
'key1': 'list2Key1Value',
'key2': 'list2Key2Value',
'key3': 'list2Key3Value'}
},
'list3': {
'0': {
'key1': 'list3Key1Value',
'key2': 'list3Key2Value',
'key3': 'list3Key3Value'}
}
},
'other': {'key': 'otherKeyValue'}
}
但现在,我想是有都可以强制转换为整数转换为密钥的任何字典列表,所以我的最终输出看起来更像:
{'item': {
'key': 'value',
'key2': 'value2',
'list': [
'listValue1',
'listValue2',
'listValue3'],
'list2': [{'key1': 'list2Key1Value',
'key2': 'list2Key2Value',
'key3': 'list2Key3Value'}],
'list3': [{'key1': 'list3Key1Value',
'key2': 'list3Key2Value',
'key3': 'list3Key3Value'}]
},
'other': {'key': 'otherKeyValue'}
}
有关如何完成此任务的任何建议?
为什么不保留原有的数据身边? –