我有以下代码,它会将一个openpyxl工作表中的三个列解析成一个
其输出结果如下所示:
我想做的是将每个元素中的最终值(即2.0、588.0等)乘以一个常数,从而得到另一个
能否通过某种方式将
defaultdict
。def campaigns_and_adsets_and_pageviews_from_ga(ourTab):
d = defaultdict(lambda: defaultdict(int))
for row in ourTab.rows[1:-1]:
if ('Facebook' in row[0].value) and ('(not set)' not in row[2].value):
d[row[1].value][row[2].value] += row[4].value
return d
其输出结果如下所示:
In [790]: campaigns_and_adsets_and_pageviews_from_ga(ourTab)
Out[790]:
defaultdict(<function __main__.<lambda>>,
{u'XXX 20160314': defaultdict(int,
{u'Carnival desktopfeed': 2.0,
u'Carnival mobilefeed': 588.0,
u'PYS Broad desktopfeed': 371.0,
u'PYS Broad mobilefeed': 1192.0}),
u'YYY Intl 20150903': defaultdict(int,
{u'CA desktopfeed': 2.0}),
我想做的是将每个元素中的最终值(即2.0、588.0等)乘以一个常数,从而得到另一个
defaultdict
(甚至一个普通的嵌套dict
也可以)。能否通过某种方式将
defaultdict
解构为嵌套字典,以便允许进行转换?或者还有哪些其他方法可行?
.items()
以便能够遍历每个条目。 - g.d.d.ccampaigns_and_adsets_and_pageviews_from_ga
函数,只返回定义嵌套字典的字典文字(暂时不要管defaultdict
):return {u'XXX 20160314': {u'Carnival desktopfeed':2.0,...}}
。然后编写正确复制并将数字加倍的代码。然后切换回使用计算结果返回defaultdict
。这样您就不会分心,认为所有出现问题都必须与defaultdict
有关 :-) - Steve Jessop