【发布时间】:2014-07-19 05:17:02
【问题描述】:
所以,我正在处理一个列表中包含一堆列表的文件。我正在尝试按参与者总数的前 5 个州和后 5 个州对它们进行排列。
import csv
from operator import itemgetter #not really using this right now
crimefile = open('APExam.txt', 'r')
reader = csv.reader(crimefile)
allRows = [row for row in reader]
L = sorted(allRows,key=lambda x: x[1])
for item in L:
print item[0],','.join(map(str,item[1:]))
打印如下内容:
State Total #,% passed,%female
Wyoming 0,0,0
New Hampshire 101,76,12
Utah 103,54,4
Mass 1067,67,18
Montana 11,55,0
Iowa 118,80,9
Alabama 126,79,17
Georgia 1261,51,18
Florida 1521,44,20
Illinois 1559,69,13
New Jersey 1582,74,15
Maine 161,67,16
这会以几乎我正在寻找的方式打印文件,但参与者的总数不是按从大到小排序的;它通过查看第一个元素进行排序。如何将其更改为更像:
New Jersey 1582,74,15
Illinois 1559,69,13
Florida 1521,44,20
Georgia 1261,51,18
Etc...
第一次在这里提问,感谢任何帮助! :) 另外,我尽量不使用 .sort() 或 find() 函数或“in”运算符——例如“if 6 in [5, 4, 7 6] ...”
编辑*:通过改变 L
L = sorted(allRows,key=lambda x: int(x[1]),reverse=True)
我已经到了让列表按降序排列的地步:
State Total #,% passed,%female
California 4964,76,22
Texas 3979,62,23
New York 1858,69,20
Virginia 1655,60,19
Maryland 1629,66,20
New Jersey 1582,74,15
Illinois 1559,69,13
Florida 1521,44,20
现在我似乎不太明白如何根据这些总数只取前 5 名和后 5 名...
【问题讨论】:
标签: python list python-2.7 sorting