我正在研究一个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}
虽然这是一个可行的解决方案,但感觉像是一种严重的非最佳黑客手段。因此,为了教育起见,我想知道是否有另一种更好的解决方案来完成此任务。也许是我不知道的另一个更优化的数据结构,一个现有的类已经设法以一种更好的方式做到这一点。
就这样,谢谢您的建议!
答案 0 :(得分:0)
您可以使用嵌套的defaultdict
:
from collections import defaultdict as dd
dictionary = dd(lambda: dd(int))
如果您将上述数据结构传递给函数,则该函数可以简单地是:
def addNewValue(dictionary, month, country, valueToAdd):
dictionary[month][country] += valueToAdd