【发布时间】:2013-02-04 11:42:41
【问题描述】:
在下面的代码中(以降序打印工资,按专业排序),
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
当我将“律师”置于相同的“如果”条件下时,输出为:
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':
Tokyo,400
Delhi,300
London,100
虽然输出应该类似于:
Tokyo,800
London,700
Delhi,400
Tokyo,400
Delhi,300
London,100
问题到底出在哪里?
【问题讨论】:
-
抱歉,问题出在哪里?两个输出都按薪金降序排列。
-
@isedev 好的。首先,感谢您解决问题。只是另一个疑问:在远程服务器上编译相同的代码时,我收到此错误-> 全局名称“a”未定义
-
这听起来不太可能......你确定你没有拼写错误、剪切粘贴错误、相同的 python 版本等......?
-
我确定我没有错别字。语法错误等..可能是python版本。但后来我想知道产生这个错误的python 3会发生什么变化? (我使用的是 2.7,也许服务器包含 3.0。我不知道..)
-
刚刚在 Python 3.2 上尝试过。上面的代码导致了很多问题,但与未定义“a”无关:)