1 行目から 6 行目を理解していると仮定すると…</p>
7 行目:
sums[ix]=sums.get(ix, 0)+num
sums.get(ix, 0)
を返すsums[ix]
場合を除いて、 と同じです。したがって、これは に似ていますが、これが を初めて見た場合に最初に値を に設定する点が異なります。ix not in sums
0
sums[ix] += num
0
ix
sums[ix]
したがって、このループの終わりまでに、が column のすべての値の合計になることは明らかですix
。
これはばかげた方法です。mgilson が指摘しているdefaultdict
ように、追加のロジックは必要ありません。または、もっと簡単に言えば、 a のlist
代わりに a を使用することもできますdict
。なぜなら、これ (連続した小さな数字によるインデックス付け) がまさにlist
s の目的だからです…</p>
8 行目:
for key in sorted(sums):
まず、 anydict
を alist
または他の iterable であるかのように反復でき、 を反復するのと同じ効果がありますsums.keys()
。したがって、 のようsums
に見える場合は{ 0: 4, 1: 6, 2: 3 }
、 を反復処理し0, 1, 2
ます。
ただし、dict
固有の順序はありません。、または、またはその他の順序で0, 1, 2
取得できます。1, 0, 2
したがって、ソートされた順序でキーsorted(sums)
のコピーを返すだけで、その順序でlist
取得できることが保証されます0, 1, 2
。
繰り返しますが、これはばかげています。なぜならlist
、最初に a を使用しただけで、順序が整うからです。
9 行目:
print(key, '=', sums[key])
これは明らかなはずです。key
を繰り返す場合0, 1, 2
、これは0 = 4
, 1 = 6
, を出力し2 = 3
ます。
つまり、各列番号を、その列のすべての値の合計と共に出力します。