以下のコード (給与を降順、職業別に表示) では、
reader = csv.DictReader(open('salaries.csv','rb'))
rows = sorted(reader)
a={}
for i in xrange(len(rows)):
if rows[i].values()[2]=='Plumbers':
a[rows[i].values()[1]]=rows[i].values()[0]
t = [i for i in sorted(a, key=lambda key:a[key], reverse=True)]
p=a.values()
p.sort()
p.reverse()
for i in xrange(len(a)):
print t[i]+","+p[i]
条件ステートメントに「配管工」を入れると、配管工の給与の出力は次のようになります。
Tokyo,400
Delhi,300
London,100
「弁護士」を同じ「if」条件に入れると、出力は次のようになります。
Tokyo,800
London,700
Delhi,400
CSV の内容は次のようになります。
City,Job,Salary
Delhi,Lawyers,400
Delhi,Plumbers,300
London,Lawyers,700
London,Plumbers,100
Tokyo,Lawyers,800
Tokyo,Plumbers,400
そして、私が削除すると --> if rows[i].values()[2]=='Plumbers': <-- プログラムから、すべての出力を出力するはずでしたが、これらの3つだけを出力します:
Tokyo,400
Delhi,300
London,100
出力は次のようになりますが、
Tokyo,800
London,700
Delhi,400
Tokyo,400
Delhi,300
London,100
問題はどこにありますか?