我需要按最后一列(升序)对文件进行排序,然后grep前100行。代码是:
import sys
from operator import itemgetter
file_name = sys.argv[1]
with open(file_name) as file:
file_contents = file.read()
lines = file_contents.split("\n")[1:-1]
data = [(i, float(line.split()[-1])) for i, line in enumerate(lines)]
sorted_data = sorted(data, key=itemgetter(1))
print lines[sorted_data[0]]
文件格式:
1 ddddd 346700 T ADD 798 0.002934 0.2829 0.7
1 dddd 943567 A ADD 798 -0.02574 -1.496 0.1
此代码返回错误:
error
list indices must be integers, not tuple
答案 0 :(得分:1)
您的sorted_data是一个元组列表,第一个数字是lines变量中的行号。您的代码错误,因为您在打印时尝试将元组而不是整数传递到行变量中。要获取lines变量中的相关行,您可以使用列表推导:
results = [lines[idx] for idx, v in sorted_data]
print(results[:100])