2016-08-22 9 views
0

私は、jsonファイルから複数のアドレスのバランスを取って最終的なバランスを取るスクリプトを作成しようとしています。Python2 - "for"ループ出力を集計する

これは、これまでのコードである -

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 

数字を一緒に追加するためにコードを編集する必要がありますか?

+0

私はしませんでした。私はDeepSpaceを使った。 –

+1

私は時間を振らない傾向があります。私はコードの読みやすさを好む。 –

答えて

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) 
+0

もう1つはうまくいった!助けてくれてありがとう。最初のものは私に "TypeError:+ =: 'int'と 'unicode'のためのサポートされていないオペランドタイプ" –

+0

@WhytetheWeeabear Fixed、両方のアプローチが今動作します。 – DeepSpace

+0

うん、ありがとう。 5分待つ時間! :) –

0

あなたはsum機能とリスト内包表記を使用することができます。これを達成するために

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

ほとんどの神託の方法は次のようになります。

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

map()float番号にstr番号のリストを変換し、sum()ますそれらを一緒に追加します。

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'] 

は、このヘルプを願っています!

関連する問題