Python中输出的一列的反向数字排序
请帮忙。 我有一个csv文件,如下所示:Python中输出的一列的反向数字排序,python,Python,请帮忙。 我有一个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 我无法对打印的第二列进行正确的反向排序 这是我的密码 import csv import collections grades = collections.Counter() with open('Ya.csv') as input_file: for row in
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
我无法对打印的第二列进行正确的反向排序
这是我的密码
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
如果您只是想根据第二列对记录进行排序,您可以将其作为:
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
如果您只是想根据第二列对记录进行排序,您可以将其作为:
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
您可以将从
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
这将显示您的输出,如下所示:
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]
的作用是按相反顺序返回从最常见的
返回的列表。如前所述,使用with
语句意味着文件将在之后自动关闭。您可以按如下方式颠倒从最常见()返回的顺序:
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
这将显示您的输出,如下所示:
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]
的作用是按相反顺序返回从最常见的
返回的列表。如前所述,使用with
语句意味着文件将在之后自动关闭。您使用了错误的数组索引。索引2表示第三个字段,因此计算最后一列。输出意味着你有5倍的4作为最后一列,一次是3,一次是2,一次是14,你不需要input\u file.close()
在之后加和块。这就是with
块的作用。@HubertGrzeskowiak因为我的初始数据文件有3列,您的预期输出是什么?@MartinEvans喜欢我的输出,但反向排序只需要第2列!您使用了错误的数组索引。索引2表示第三个字段,因此计算最后一列。输出意味着你有5倍的4作为最后一列,一次是3,一次是2,一次是14,你不需要input\u file.close()
在之后加和块。这就是with
块的作用。@HubertGrzeskowiak因为我的初始数据文件有3列,您的预期输出是什么?@MartinEvans喜欢我的输出,但反向排序只需要第2列!您是排序1列,而不是第2列您是排序1列,而不是第2列