空の辞書でfor in ができるのか
解決したいこと
paizaの問題集(python)で分からなかった部分があるので教えていただきたいです。※スキルチェックの問題ではないです。
問題文
1行目に行数を表す整数 n、続く n 行の各行で「文字」と「整数」の組が空白区切りで入力されます。
n 個の組について、「文字」の値が同じ組同士の数値を足しあわせてまとめ、まとめた数値の降順で、文字とまとめた数値の組を出力してください。
この際、まとめた数値は重複しません。
▼ 下記解答欄にコードを記入してみよう
入力される値
入力は以下のフォーマットで与えられます。
n
S_1 D_1
S_2 D_2
...
S_i D_i
...
S_n D_n
S_i は「文字」で、D_i は「整数」です。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力
文字とまとめた数値の組を各行で出力してください。
文字と数値は半角スペースで区切ってください。
条件
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 10,000
・-10,000 ≦ D_i ≦ 10,000 (ただし、1 ≦ i ≦ n)
・S_iは1つの半角英文字
入力例1
7
A 1
D 6
C 2
G 4
B 70
A 10
B 5
出力例1
B 75
A 11
D 6
G 4
C 2
入力例2
3
G 0
S 3
E -2
出力例2
S 3
G 0
E -2
入力例3
5
A -2
E 0
W -5
A -1
E -20
出力例3
A -3
W -5
E -20
答えのコード
該当するソースコード
例)
num = int(input())
inputs = {}
result = {}
for i in range(num):
tmp = input().split()
exist = False
for (key, value) in inputs.items():
if key == tmp[0]:
exist = True
if exist:
inputs[tmp[0]] = inputs[tmp[0]] + int(tmp[1])
else:
inputs[tmp[0]] = int(tmp[1])
# ソート用にkeyとvalueを反転させた辞書を作る
for (key, value) in inputs.items():
result[value] = key
result = sorted(result.items(), reverse=True)
for i in result:
print(i[1] + " " + str(i[0]))
分からないところ
for (key, value) in inputs.items():の部分がなぜこのコードで動くのか調べてもよく分からないので教えていただきたいです。このコードのinになっているinputs.items()はこの時点では空の要素であり、key,valueには何も入らないため、なぜこのコードが動くのか理解できないです。printをつかっても何も出力されないのでどのように動いているのかよく分かりません。