【发布时间】:2012-10-24 20:08:12
【问题描述】:
我有一个包含许多列的 CSV 文件。我正在尝试根据其中一列中的值对行进行排序(按数字降序排列)。而且我只输出前 10 名。但是,当我使用以下代码时,我得到了错误的输出。
import csv
f = open('SNPs.csv', "rU")
reader = csv.reader(f)
output = [row for row in reader]
output.sort(key=lambda x: x[32], reverse=True)
print dict((row[10], (row[11], row[8], row[32])) for row in output[:10])
输出类似于:
'XRgroup8': ('38', '2', '0.47'), '2': ('30', '13', '0.37'), 'Chromosome': ('Position', 'Distance', 'GC'), 'XRgroup5': ('54', '1', '0.45')
很明显,它没有返回 10 个值,而且它们也没有按顺序排列。有什么想法吗?
【问题讨论】:
-
什么是
len(output)?您希望的最终输出是什么? -
你可以做
output = list(reader),或者更好,output = sorted(reader, key= ..., reverse=True) -
@mgilson 是的,那行得通,但是,我可以在仍然只输出那些特定列的同时这样做吗? (10, 11, 8, 32)
标签: python sorting csv dictionary