请,帮助。 我有csv文件,看起来像这样:
435;fd;4
435;a;4
435;b lfdsk;2
435;c lfdsk;4
435;d;14
435;dsf;3
435;ad;4
435;fd;4
我无法从打印件中正确地对一(2)列进行反向排序。
这是我的代码
import csv
import collections
grades = collections.Counter()
with open('Ya.csv') as input_file:
for row in csv.reader(input_file, delimiter=';'):
grades[row[2]] += 1
print '\n'.join(('%s;%s' % (key, value) for key, value in grades.most_common()))
input_file.close()
输出:
4;5
3;1
2;1
14;1
答案 0 :(得分:0)
如果您只是想根据第二列对记录进行排序,可以将其作为:
import csv
records = []
with open('Ya.csv') as input_file:
for row in csv.reader(input_file, delimiter=';'):
if len(row) == 3:
records.append(row)
sorted_records = sorted(records, key=lambda record: int(record[2]), reverse=True)
print sorted_records
答案 1 :(得分:0)
您可以按照以下方式撤消从most_common()
返回的订单:
import csv
import collections
grades = collections.Counter()
with open('Ya.csv') as input_file:
for row in csv.reader(input_file, delimiter=';'):
grades[row[2]] += 1
print '\n'.join(('%s;%s' % (key, value) for key, value in grades.most_common()[::-1]))
这将显示您的输出如下:
14;1
2;1
3;1
4;5
[::-1]
具有以相反的顺序返回从most_common
返回的列表的效果。如上所述,使用with
语句意味着文件将在之后自动关闭。