迭代字典的子列表--Python

时间:2016-09-24 08:28:14

标签: python

我有一个词典列表,例如:

list_d = [{"a":1},{"b":2,"c":3}]

(案例1)

for item in list_d:
   # add values of each sub-list's dicts

(案例2)

for item in list_d[1]:
   # add values of the specific sub-list of dict

(case1)它返回每个子列表的dict值的总和。

(case2)仅返回字典的键。

是否有一种有效的方法来获取子列表(case2)的字典以便添加值?

2 个答案:

答案 0 :(得分:0)

以下是一种方法:

Matrix

也就是说,从0开始(作为第一个reduce(lambda x,y: x + sum(y.values()), list_d, 0) ),在x中的每个dict中添加所有值的总和。

这是另一种方式:

list_d

即,将sum(sum(x.values()) for x in list_d) 中每个dict的值之和相加。

答案 1 :(得分:0)

Antti指出,目前还不清楚你的要求是什么。我建议您查看Python中用于Functional programming

的内置工具

请考虑以下示例:

from operator import add

list_d = [{"a":1},{"b":2,"c":3}]

case_1 = map(lambda d: sum(d.values()), list_d)
case_2 = reduce(add, map(lambda d: sum(d.values()), list_d))