【发布时间】:2018-03-16 02:53:32
【问题描述】:
寻找没有循环的最有效方法... 鉴于以下 Python(2.7) 字典:
l = [{
"General": {
"Iteration": {
"CATID": 74470
}
},
"Return": {
"Effectiveness": {
"Metrics": [{
"Volume": 1004287.8947531971,
"BusinessMetricID": 1,
"ImpactScore": 0.032579772546071015,
"GrossMargin": 10042878.94753197,
"Revenue": 20085757.89506394
},
{
"Volume": 2678101.0526751927,
"BusinessMetricID": 2,
"ImpactScore": 0.08687939345618939,
"GrossMargin": 6695252.631687982,
"Revenue": 13390505.263375964
}]
}
}
},
{
"General": {
"Iteration": {
"CATID": 74471
}
},
"Return": {
"Effectiveness": {
"Metrics": [{
"Volume": 1004287.8947531971,
"BusinessMetricID": 1,
"ImpactScore": 0.032579772546071015,
"GrossMargin": 10042878.94753197,
"Revenue": 20085757.89506394
},
{
"Volume": 2678101.0526751927,
"BusinessMetricID": 2,
"ImpactScore": 0.08687939345618939,
"GrossMargin": 6695252.631687982,
"Revenue": 13390505.263375964
}]
}
}
}]
我试图在添加 CATID 属性以获取以下字典列表的同时展平列表的指标列表
[{
"CATID": 74470,
"Volume": 35399.19921217802,
"BusinessMetricID": 1,
"ImpactScore": 0.015,
"GrossMargin": 353991.9921217802,
"Revenue": 707983.9842435603
},
{
"CATID": 74470,
"Volume": 94397.86456580806,
"BusinessMetricID": 2,
"ImpactScore": 0.04,
"GrossMargin": 235994.66141452017,
"Revenue": 471989.32282904035
},
{
"CATID": 74471,
"Volume": 35399.19921217802,
"BusinessMetricID": 1,
"ImpactScore": 0.015,
"GrossMargin": 353991.9921217802,
"Revenue": 707983.9842435603
},
{
"CATID": 74471,
"Volume": 94397.86456580806,
"BusinessMetricID": 2,
"ImpactScore": 0.04,
"GrossMargin": 235994.66141452017,
"Revenue": 471989.32282904035
}
]
最有效的方法是什么?我尝试使用列表理解,但找不到添加额外属性的方法。 简单地展平我使用的指标:
[item for sublist in [x['Return']['Effectiveness']['Metrics'] for x in l] for item in sublist]
这给了我:
[{
'Volume': 1004287.8947531971,
'BusinessMetricID': 1,
'ImpactScore': 0.032579772546071015,
'GrossMargin': 10042878.94753197,
'Revenue': 20085757.89506394
},
{
'Volume': 2678101.0526751927,
'BusinessMetricID': 2,
'ImpactScore': 0.08687939345618939,
'GrossMargin': 6695252.631687982,
'Revenue': 13390505.263375964
},
{
'Volume': 1004287.8947531971,
'BusinessMetricID': 1,
'ImpactScore': 0.032579772546071015,
'GrossMargin': 10042878.94753197,
'Revenue': 20085757.89506394
},
{
'Volume': 2678101.0526751927,
'BusinessMetricID': 2,
'ImpactScore': 0.08687939345618939,
'GrossMargin': 6695252.631687982,
'Revenue': 13390505.263375964
}]
谢谢。
【问题讨论】:
标签: python list dictionary list-comprehension flatten