Python2 - Summing" for"循环输出

时间:2016-08-22 07:42:30

标签: python json python-2.7 for-loop

我试图创建一个脚本,从json文件中获取多个地址的余额,并将它们加在一起以进行最终平衡。

这是到目前为止的代码 -

import json
from pprint import pprint

with open('hd-wallet-addrs/addresses.json') as data_file:    
    data = json.load(data_file)

for balance in data:
    print balance['balance']


这是json文件中的内容:

[
    {
        "addr": "1ERDMDducUsmrajDpQjoKxAHCqbTMEU9R6",
        "balance": "21.00000000"
    },
    {
        "addr": "1DvmasdbaFD7Tj6diu6D8WVc1Bkbj7jYRM",
        "balance": "0.30000000"
    },
    {
        "addr": "18xkkUi7qagUuBAg572UsmDKcZTP5zxaDB",
        "balance": "0.80000000"
    },
    {
        "addr": "1MmTDCsySdsWRVbNFwXBy2APW5kGsynkaA3",
        "balance": "0.005"
    },

]

输出如下:

21
0.3
0.8
0.005

我应该如何编辑代码以将数字添加到一起?

4 个答案:

答案 0 :(得分:2)

实际上将它们加在一起......

total = 0
for balance in data:
    total += float(balance['balance'])
print total

或使用sum

print sum(float(temp_balance['balance']) for temp_balance in data)

答案 1 :(得分:1)

实现这一目标的大多数pythonic方式将是:

final_balance = sum(map(float, [balance['balance'] for balance in data]))

map()会将str个数字列表转换为float个数字,sum()会将它们加在一起。

答案 2 :(得分:0)

您可以使用sum功能和列表理解:

sum([float(b['balance']) for b in balance])

答案 3 :(得分:0)

balance_prev = 0
balance_sum = 0
for balance in data:
    balance_sum = float(balance_prev) + float(balance['balance'])
    balance_prev = balance_sum
print balance['balance']
希望这有帮助!!