如何遍历列表的字典并创建一个新字典?

时间:2019-10-17 09:36:09

标签: python loops dictionary google-analytics google-analytics-api

有一本字典:

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'}]}

}

0 个答案:

没有答案