我有一組數據,看起來與此類似:轉換列表中嵌套的列表和類型的字典
[ {"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'}
}
有關如何完成此任務的任何建議?
爲什麼不保留原有的數據身邊? –