gpt4 book ai didi

python - 使用 Python 对两列进行数字排序,但顺序不同

转载 作者:行者123 更新时间:2023-11-30 23:35:17 25 4
gpt4 key购买 nike

我必须根据两列对多列文件进行排序。两列都有 float ,第一列应从低到高排序,第二列应从高到低排序。这是示例文件:

A        B        C        D
AK 0.01 200.8 NY
DK 0.90 50.5 PHL
AB 0.0002 750.04 Port
GA 0.076 340.00 NY

因此,我必须首先按从低到高的顺序对 B 列进行排序,然后按从高到低的顺序对 C 列进行排序。我的代码花费了大量时间,并使我的笔记本电脑无响应,我认为情况不应该如此。此外,我不知道如何以“反向”对 B 列进行排序,即从高到低。这是代码:

fh_in = open(res_file,'r')
res = [line.strip('\n').split('\t') for line in fh_in]##Line converted to list and read
res_list = list(res) ##List to hold results while pre-processing
res_list.sort(key= lambda x: (float(x[int(1)]),-float(x[2])))##Sort on Col A and B
print ('Sorted results:\n',res_list)

如何对 B 列从高到低排序的两列进行排序?因为我有多个文件,每个文件有 25,000 行 * 50 列,那么最快的实现方法是什么?

非常感谢您的帮助。

-AK-

最佳答案

简单地返回负数:

res_list.sort(key=lambda x: (float(x[1]), -float(x[2])))

这会颠倒 B 排序顺序,但请注意,数据按 A排序。

请注意,您可以使用 sorted() 函数将排序与代码中的前一行结合起来:

res_list = sorted(res, key=lambda x: (float(x[1]), -float(x[2]))

关于python - 使用 Python 对两列进行数字排序,但顺序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com