Python 获取嵌套列表字典中所有值的总和

Python 获取嵌套列表字典中所有值的总和,python,python-3.x,Python,Python 3.x,我想得到这三个月的存款总额。但是,返回时出现以下错误: Banking_Deposits = {'January':[15000,9800,10100], 'Feburary':[2500,1400,14100], 'March': [20000,78366]} total_dep = sum(Banking_Deposits.values()) 目前,sum()并没有遍历字典中的每个存款,而是遍历Banking\u depositions.values()中的每个列表。由于sum的初始值

我想得到这三个月的存款总额。但是,返回时出现以下错误:

Banking_Deposits = {'January':[15000,9800,10100],  'Feburary':[2500,1400,14100], 'March': [20000,78366]}

total_dep = sum(Banking_Deposits.values())
目前,
sum()
并没有遍历字典中的每个存款,而是遍历
Banking\u depositions.values()
中的每个列表。由于sum的初始值设定项是0,这是一个int,因此当sum试图将每个列表添加到0时,会出现错误。一个解决方案是在计算总数之前先将列表展平:

sum(val代表银行存款的价值。values()代表val代表价值)

目前
sum()
并没有循环遍历字典中的每个存款,而是循环遍历
银行存款的每个列表。values()
。由于sum的初始值设定项是0,这是一个int,因此当sum试图将每个列表添加到0时,会出现错误。一个解决方案是在计算总数之前先将列表展平:


sum(val表示银行存款中的价值。values()表示val表示价值)
更直观的方法是进行嵌套求和:

TypeError: unsupported operand type(s) for +: 'int' and 'list'
您还可以使用
start
参数首先加入列表:

sum(sum(x) for x in Banking_Deposits.values())
start
的默认值是0,这就是为什么会出现错误:
0+[…]
不计算。更不用说你的原始总和会产生一个很长的列表,而不是一个数字,因为这是你将列表加在一起得到的结果

链接列表的更好方法是使用,它不会将多个列表分配为副产品:

sum(sum(Banking_Deposits.values(), []))

建议使用一种等效且更直观的方法来展平我极力推荐的值。

更直观的方法是进行嵌套求和:

TypeError: unsupported operand type(s) for +: 'int' and 'list'
您还可以使用
start
参数首先加入列表:

sum(sum(x) for x in Banking_Deposits.values())
start
的默认值是0,这就是为什么会出现错误:
0+[…]
不计算。更不用说你的原始总和会产生一个很长的列表,而不是一个数字,因为这是你将列表加在一起得到的结果

链接列表的更好方法是使用,它不会将多个列表分配为副产品:

sum(sum(Banking_Deposits.values(), []))

建议使用一种等效的、更直观的方法来展平我极力推荐的值。

只需迭代字典,通过指定键获得它们的值,然后求和即可。像这样:

sum(chain.from_iterable(Banking_Deposits.values()))

只需迭代字典,通过分配键获得它们的值,然后求和。像这样:

sum(chain.from_iterable(Banking_Deposits.values()))

不求和总计,循环执行不必要的查找,因为您可以迭代值而不是键。不求和总计,循环执行不必要的查找,因为您可以迭代值而不是键。