Python-在dictionary/json值中添加多个值
我正在构建一个Python-在dictionary/json值中添加多个值,python,json,Python,Json,我正在构建一个python应用程序,它接收以下格式的REST响应: [ { 'metric': 'pass_status', 'history': [ { 'date': '2019-02-20T10:26:52+0000', 'value': 'OK' }, { 'date': '2019-03-13T11:37:39+0000', 'value': 'FAIL'
python
应用程序,它接收以下格式的REST响应:
[
{
'metric': 'pass_status',
'history': [
{
'date': '2019-02-20T10:26:52+0000',
'value': 'OK'
},
{
'date': '2019-03-13T11:37:39+0000',
'value': 'FAIL'
},
{
'date': '2019-03-13T12:00:57+0000',
'value': 'OK'
}
]
},
{
'metric': 'bugs',
'history': [
{
'date': '2019-02-20T10:26:52+0000',
'value': '1'
},
{
'date': '2019-03-13T11:37:39+0000',
'value': '6'
},
{
'date': '2019-03-13T12:00:57+0000',
'value': '2'
}
]
},
{
'metric': 'code_smells',
'history': [
{
'date': '2019-02-20T10:26:52+0000',
'value': '0'
},
{
'date': '2019-03-13T11:37:39+0000',
'value': '1'
},
{
'date': '2019-03-13T12:00:57+0000',
'value': '2'
}
]
}
]
您可以看到每个指标的日期都是相同的。
我想按日期整理此数据,即我的结果json/dictionary
应该如下所示:
[
'2019-02-20T10:26:52+0000' : {
'pass_status' : 'OK',
'bugs' : '1',
'code_smells' : '0'
},
'2019-03-13T11:37:39+0000' : {
'pass_status' : 'FAIL',
'bugs' : '6',
'code_smells' : '1'
},
'2019-03-13T11:37:39+0000' : {
'pass_status' : 'OK',
'bugs' : '2',
'code_smells' : '2'
}
]
建议的方法是什么
谢谢我尝试了一些
itertools.groupby
魔术,但结果变成一团乱麻
也许迭代+defaultdict
只是让它保持简单
像这样:
从集合导入defaultdict
结果=默认dict(dict)
对于数据中的度量值:
metric\u name=metric\u dict['metric']
对于公制目录[‘历史记录’]中的条目:
结果[entry['date'][metric_name]=entry['value']
打印(记录(结果))
或提供完整的数据示例:
数据=[
{
'指标':'通过状态',
"历史":[
{
“日期”:“2019-02-20T10:26:52+0000”,
“值”:“确定”
},
{
“日期”:“2019-03-13T11:37:39+0000”,
“值”:“失败”
},
{
“日期”:“2019-03-13T12:00:57+0000”,
“值”:“确定”
}
]
},
{
'度量':'错误',
"历史":[
{
“日期”:“2019-02-20T10:26:52+0000”,
“值”:“1”
},
{
“日期”:“2019-03-13T11:37:39+0000”,
“值”:“6”
},
{
“日期”:“2019-03-13T12:00:57+0000”,
“值”:“2”
}
]
},
{
“度量”:“代码”,
"历史":[
{
“日期”:“2019-02-20T10:26:52+0000”,
“值”:“0”
},
{
“日期”:“2019-03-13T11:37:39+0000”,
“值”:“1”
},
{
“日期”:“2019-03-13T12:00:57+0000”,
“值”:“2”
}
]
}
]
从集合导入defaultdict
结果=默认dict(dict)
对于数据中的度量值:
metric\u name=metric\u dict['metric']
对于公制目录[‘历史记录’]中的条目:
结果[entry['date'][metric_name]=entry['value']
打印(结果)