减少列表字典的最佳方法

时间:2013-05-08 17:50:26

标签: python

我正在问这个问题,以获得Pythonic方法的起点,使用列表推导来减少以下字典中的一些列表内容:

{'cycle1': [1, 2407, 2393, 14],
 'cycle2': [2, 1657, 1652, 5], 
 'cycle3': [3, 2698, 2673, 25], 
 'cycle4': [4, 2116, 2102, 14], 
 'cycle5': [5, 2065, 2048, 17], 
 'cycle6': [6, 1633, 1615, 18]}

每个列表的列虽然没有标记,但却有以下标题:

section_num,account_total,billable_count,nonbillable_count

我想在列表推导中对最后三列中的每一列,account_total,billable_count,non-billable_count求和。

我只是不确定如何在理解中总结每个列表成员。我需要询问每个键的值,每个值都是一个列表。我只是不确定如何做到这一点。

2 个答案:

答案 0 :(得分:3)

如何使用zip?这是每列的单独总和,但我不确定这是你想要的。

[sum(x) for x in zip(*my_dict.values())[1:]]

输出:

[12576, 12483, 93]

答案 1 :(得分:2)

对于请求的输出格式有点不清楚,但下面的行汇总了第二列:

In [13]: c = {'cycle1': [1, 2407, 2393, 14],
 'cycle2': [2, 1657, 1652, 5], 
 'cycle3': [3, 2698, 2673, 25], 
 'cycle4': [4, 2116, 2102, 14], 
 'cycle5': [5, 2065, 2048, 17], 
 'cycle6': [6, 1633, 1615, 18]}

In [14]: sum([v[1] for k, v in c.iteritems()])
Out[14]: 12576

使用python3.3

>>> sum([v[1] for v in c.values()])
12576