云杉的博客

我的愿望是 世界和平

关于排序的问题

下午帮一个妹子去处理一个表,有数据三万多条,要实现先把大类排序,然后再把大类中的小类排序。不同的大类里里面可能有相同大小的小类。举个例子,一个地区里面,有不同的学校(号码不同),先把学校号码进行排序,然后再把每个学校的的学生学习名次进行排序。  注意,这里我把每一行前面三项省略了。如下

07537666X 广东兴业金融服务有限公司成都分公司
052529272 成都锦泓恒肽科技有限公司
597251397 成都黑金科技有限公司
577391309 成都市锦江区三圆颈腰椎病研究院
072429826 厦门市智业软件工程有限公司成都分公司
572291114 成都尊美亿容生物科技有限公司
762348740 四川联动通讯有限公司
069765845 成都尚思合文化传播有限公司
592074213 成都几何新媒科技有限公司
20182003X 四川省装璜设计印务中心
050069591 四川华迪航天金穗高技术有限公司成都分公司
  5101 65
5101 65
5101 73
5101 65
5101 75
5101 63
5101 87
5102 65
5102 74
5102 75
5102 72
5102 65


如上图,就是要先把第一列进行排序,然后对第二列进行排序,这个排序就是对每一个大类(如5101)后面的数进行大小排序。得出这样的结果

5101 63
5101 65
5101 65
5101 73
5101 73
5101 87
5101 87
5102 65
5102 65
5102 73
5102 73
5102 87
 

思路是先把每一行写成一个元组,然后写成一个大的列表,


f.write('行政区域'+','+'行业代码'+','+'单位名称'+','+'营业收入'+','+'frdm'+'\n')
items = []
for line in open(path + 'mengting.csv','r'):
    line = line.strip().split(',')
    c = (line[2][:4],line[3][:2],line[1],line[4],line[0])     #这是把原表中每一行写成了一个元组。
    items.append(c)                                                                 #把所有的项写成了一个列表
item = sorted(items, key=lambda x: (`x[0], x[1].lower()))     #对总列表进行排序
x =len(item)
for each in range(x):
    end = list(item[each])
    f.write(end[0]+','+end[1]+','+end[2]+','+end[3]+','+end[4]+'\n')
f.close()


阅读更多
上一篇python编码问题汇总
下一篇关于python的列表排序问题汇总
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭