有一本字典:
dict_example =
{'type_a': {'view_id': ['111', '222', '333'],
'start_date': '2019-07-01',
'end_date': '2019-09-01'},
'type_b': {'view_id': ['111'],
'start_date': '2019-07-01',
'end_date': '2019-09-01'}}
对于每种类型和每种view_id,我都需要添加指标和维度并构建包括它们的新dict。
对于type_a,我必须添加:指标:ga:type_a_metric,尺寸:ga:type_a_dimension 对于type_b,我必须添加:指标:ga:type_b_metric,尺寸:ga:type_b_dimension
它们存储在数据框中
metrics =
request_type metrics_name
type_a ga:type_a_metric
type_b ga:type_b_metric
dimensions =
request_type dimension_name
type_a ga:type_a_dimension
type_b ga:type_b_dimension
所以首先我要遍历指标和维度
# stores values for the last type: type_b
for k in dict_example .keys():
metrics_type = metrics.loc[(metrics['request_type'] == k)]
metrics_list = metrics_type['metrics_name'].to_list()
dimensions_type = dimensions.loc[(dimensions['request_type'] == k)]
dimensions_list = dimensions_type['dimension_name'].to_list()
# add additional info fot the later use
# stores the last type: type_b
dimensions_js = [{
'name': x,
} for x in dimensions_list]
# stores the last type
metrics_js = [{
'expressions': x,
} for x in metrics_list]
So far lists include:
dimensions_js = [{'name': 'ga:type_b_dimension'}]
metrics_js = [{'expressions': 'ga:type_b_metric'}]
然后我遍历view_ids:
# stores the first type: type_a
# view_id = ['111', '222', '333']
for k, v in dict_example .items():
view_id = dict_example[k]['view_id']
# then I create a variable data and assign it for every view
# the rest of params I get from dict_example
# stores the first type
for k, v in dict_example.items():
for view in view_id:
data = {'view_id': view,
'start_date': v['start_date'],
'end_date': v['end_date'],
'metrics': metrics_js,
'dimensions': dimensions_js
}
# stores the first type: type_a data_finish
# finnaly store everything in a dict
data_finish['view_id_' + view] = data
结果是data_finish:
{'view_id_111': {'view_id': '111',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_b_metric'}],
'dimensions': [{'name': 'ga:type_b_dimension'}]},
'view_id_222': {'view_id': '222',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_b_metric'}],
'dimensions': [{'name': 'ga:type_b_dimension'}]},
'view_id_111': {'view_id': '333',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_b_metric'}],
'dimensions': [{'name': 'ga:type_b_dimension'}]}}
但是我想要的是:
{'view_id_111': {'view_id': '111',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_a_metric'}],
'dimensions': [{'name': 'ga:type_a_dimension'}]},
'view_id_222': {'view_id': '222',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_a_metric'}],
'dimensions': [{'name': 'ga:type_a_dimension'}]},
'view_id_333': {'view_id': '333',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_a_metric'}],
'dimensions': [{'name': 'ga:type_a_dimension'}]},
'view_id_111': {'view_id': '111',
'start_date': '2019-07-01',
'end_date': '2019-09-01',
'metrics': [{'expressions': 'ga:type_b_metric'}],
'dimensions': [{'name': 'ga:type_b_dimension'}]}
}