Есть словарь:
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'}]}
}