私は Python 2.75 を使用する新しいプログラマーです
by_sale
この形式で呼び出されるネストされた辞書があります。
{sale : {days_elapsed: daily_sales_amount}}.
例えば:
{'Spring Savings 0413' : {1 : 3000, 2: 2000, 4:1000},
'Back to School 0812' : {1: 4000, 3:3000, 4:2000}}
「Spring Savings 0413」には Day 3 がなく、「Back to School 0812」には Day 2 がないことに注意してください。
by_day
次のように、新しい販売がない日でも、毎日と各販売の現在の合計を保存するという新しい辞書を作成しようとしています。
{1: {'Spring Savings 0413': 3000, 'Back to School 0812': 4000},
2: {'Spring Savings 0413': 5000, 'Back to School 0812': 4000},
3: {'Spring Savings 0413': 5000, 'Back to School 0812': 7000},
4: {'Spring Savings 0413': 6000, 'Back to School 0812': 9000}}
これが私のコードです:
by_day = {}
for sale in by_sale.iterkeys():
running_total = 0
for i in range(1,4): #check for each day in the first 4 days
by_day[i] = {} #initialize a nested blank dictionary for each day
daily_amount = by_sale[sale].get(i,0) #grab the amount for the day, if none, return a zero
running_total += daily_amount
by_day[i][sale] = running # --> I know this is my problem... but why?
print by_day
返されるのは、他の販売データを上書きしているように見える最後の販売の値のみです。
{1: {'Back to School 0812': 4000},
2: {'Back to School 0812': 4000},
3: {'Back to School 0812': 7000},
4: {'Back to School 0812': 9000}}
ここで何が起こっているかはなんとなくわかります...それを止める方法がわかりません。どんなポインタでも大歓迎です!