Python:有没有更好的方法来构建字典?

时间:2014-05-09 21:09:17

标签: python dictionary

我希望通过其API从Google Analytics中提取多个维度和指标,这需要维度:指标配对。当然,我认为字典可能是一个很好的选择。为了尽量减少打字,提高可读性,我就是这样做的。

dim_dict = {
    0:'',
    1:'ga:searchUsed',
    2:'ga:searchKeyword',
    3:'ga:pageTitle',
    4:'ga:operatingSystem',
    5:'ga:goalPreviousStep3'
    }

metric_dict = {
    1:'ga:sessions',
    2:'ga:sessionDuration',
    3:'bounceRate',
    4:'pageviews',
    5:'ga:searchSessions',
    6:'ga:goalCompletionsAll'
    }

dim_metric_dict = {
    0:[1,2,3,4,5,6],
    1:[1,2,3,4,5,6],
    2:[1,2,3,4,5,6],
    3:[1,2,3,4,5,6],
    4:[1,2,3,4,5,6],
    5:[6]
    }

query_dict = {}
for dim_key in dim_dict.keys():
    met = []
    for metric_key in dim_metric_dict[dim_key]:
        met.append(metric_dict[metric_key])
    query_dict.update({dim_dict[dim_key]:met})

然后,我使用以下代码发出API请求:

def get_ga_kpi(start_date, end_date, dimensions='', sort='ga:pageviews'):
    service = build('analytics', 'v3', http=http)
    metrics = query_dict[dimensions]
    if sort not in metrics:
        sort = metrics[0]
    data_query = service.data().ga().get(**{
        'ids': 'ga:#######',
        'metrics': '%s' % (','.join(metrics)),
        'dimensions': '%s' % (dimensions),
        'start_date':'%s' % (start_date),
        'end_date':'%s' % (end_date),
        'sort': '-%s' % (sort)
        })
    return feed['rows']

代码按预期工作,但我想知道是否有更好的方法来解决这个问题。感谢您的任何意见!

1 个答案:

答案 0 :(得分:1)

我不知道这是否更好,但您可以使用词典理解和枚举来避免输入所有数字。

例如,dim_dict构造可能变为:

    dim_list = ['','ga:searchUsed','ga:searchKeyword','ga:pageTitle','ga:operatingSystem','ga:goalPreviousStep3']
    dim_dict = {key:value for (key,value) in enumerate(dim_list)}