问题描述
处理表格通常需要对其进行排序。 这个任务可以通过 MS Excel 或类似的办公程序完 成。 但如需处理大量数据,事情就会变得复杂。 此外, 有人可能想基于给定的条件对表排序或使排序过程自动化。 使用 Python 脚本可轻松实现数据排序。下面的 Python 例子根据第二列的值按降序对输入表进行排序。 使用内置函数 sorted()和从 operator模块导人的函数 itemgetter 的组合可实现这一点。 使用列表推导式可将列表的字符串元素转换为浮点数(在开始处) ,再转换回来(在结尾处) 。 程序运行如下:包含数字表的输入文件读取到 Python 表(浮点数嵌套列表)。 然后对表排序,将元素转换回字符串。 属于表不同列的元素通过制表符( ' \t ' )连接,最后打印到屏幕上。
Python 示例
from operator import itemgetter
# read table to a nested list of floats
table = []
for line in open ("random_distribution. tsv") :
columns = line. split()
columns = [float(x) for x in columns]
table.append(columns)
# sort the table by second column (index 1)
column = 1
table_sorted = sorted(table, key = itemgetter(column))
#format table as strings
for row in table_sorted:
row = [str(x) for x in row]
print ("\t".join(row))
命令的含义
大部分代码行用来打开文件,读取、将字符串转换成浮点数并将其保存于列表,然后将浮点数转换回字符串并打印。 只有一行与排序有关。sorted() 函数出现在以下指令中:
table = sorted (table, key = itemgetter(column))
这里,table 是列表的列表,sorted()是内置函数。
下面将继续重点介绍这行代码和可能的变化形式。