自定义数据结构:具有累积值的字典词典

时间:2018-09-12 09:19:31

标签: python dictionary data-structures

上下文

我正在研究一个Python脚本,该脚本可操纵Google提供的有关Play商店中已安装应用的统计信息。

特别是,我正在为每个应用记录每个国家每个月的安装量。鉴于Google是通过csv文件提供这些信息的,每个国家/地区每天都有一行,因此我必须构建一个自定义数据结构来存储值,同时解析所有行的所有行。

到目前为止

我想出了字典的字典。一级字典的键是月份(datetime对象)。值是字典,其中键是国家/地区,值是相应国家/地区在相应月份的累计安装量。

这给了我一本具有{Month : {Country : amount_of_installs} }结构的字典

这使我可以构建以下功能来逐步填充字典:

def addNewValue(dictionary, month, country, valueToAdd):
    if month in dictionary:
        if country in dictionary[month]:
            dictionary[month][country] += valueToAdd
        else:
            dictionary[month][country] = valueToAdd
    else:
        dictionary[month] = {country: valueToAdd}

问题

虽然这是一个可行的解决方案,但感觉像是一种严重的非最佳黑客手段。因此,为了教育起见,我想知道是否有另一种更好的解决方案来完成此任务。也许是我不知道的另一个更优化的数据结构,一个现有的类已经设法以一种更好的方式做到这一点。

就这样,谢谢您的建议!

1 个答案:

答案 0 :(得分:0)

您可以使用嵌套的defaultdict

from collections import defaultdict as dd

dictionary = dd(lambda: dd(int))

如果您将上述数据结构传递给函数,则该函数可以简单地是:

def addNewValue(dictionary, month, country, valueToAdd):
    dictionary[month][country] += valueToAdd