Banking_Deposits = {'January':[15000,9800,10100], 'Feburary':[2500,1400,14100], 'March': [20000,78366]}
total_dep = sum(Banking_Deposits.values())
我想获得所有 3 个月的存款总额的总和。但是我返回了这个错误:
TypeError: unsupported operand type(s) for +: 'int' and 'list'
请您参考如下方法:
更直观的方法是进行嵌套求和:
sum(sum(x) for x in Banking_Deposits.values())
您还可以使用 sum's start 参数首先加入列表:
sum(sum(Banking_Deposits.values(), []))
start 的默认值为 0,这就是您收到错误的原因:0 + [...] 不计算。更不用说您的原始总和会产生一个很长的列表而不是一个数字,因为这是您将列表加在一起得到的结果。
链接列表的更好方法是使用 itertools.chain.from_iterable ,它不会将多个列表分配为副产品:
sum(chain.from_iterable(Banking_Deposits.values()))
@Primusa's answer提出了一种等效且更直观的方法来展平我强烈推荐的值。
