我有一组类似的数据:
[ {"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"}
]
名称是从包含列表和dict的嵌套数据中扁平化的。我现在想把它放回dicts和list(如果合适的话)。在
到目前为止,我有这个:
^{pr2}$这将产生:
{'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'}
}
但是现在,我希望所有具有可以转换为int的键的dict都转换为list,这样我的最终输出看起来更像:
{'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'}
}
有什么建议可以帮我完成这个任务吗?在
您可以递归地遍历所有字典,并使用以下命令检查是否可以将所有键转换为整数:
如果其中一个键无法转换为
int
,则将生成ValueError
。在注意,这不会检查键是否是连续的整数,也不会检查它们是否从0开始,因此在将字典转换为列表时可能会浪费大量空间。在
这可能不是最有效的方法,但是。。。在
生成以下输出:
^{pr2}$您可以更改genexp以更好地满足您的需要(它可能不是您的真实数据),但这将起作用:
现在,
d
字典包含了您想要的内容相关问题 更多 >
编程相关推荐