首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python 对文件入排序操作

2013-10-25 
python 对文件进排序操作本帖最后由 danieljcky 于 2013-10-23 16:49:12 编辑RT,有一个文件为 a.txt内容如

python 对文件进排序操作
本帖最后由 danieljcky 于 2013-10-23 16:49:12 编辑 RT,有一个文件为 a.txt

内容如下:

3.3677165 2.12453 6.3779565 3.66142
0.1574803 0 3.2677203 3.66142
3.2677165 0 6.3779565 3.66142


怎么按第一列来进行排序操作,降序。后面列的数字不能变更

实现如下结果:

0.1574803 0 3.2677203 3.66142
3.2677165 0 6.3779565 3.66142
3.3677165 2.12453 6.3779565 3.66142

[解决办法]
没看懂,没看出什么降序,请 明示,
如果说是每列是要求排序的话,你的结果也是升序啊,
[解决办法]
两个问题
1.你贴出来的是升序,而不是降序
2.“不能变更”的意思是跟着第一列走吧?

二维数组代码最短应该是numpy或pandas,除去import三行足够

import pandas as pd
df = pd.read_csv('a.txt', sep=' ', header=None)
# sep是分隔符,从你的帖子看不出是空格还是制表符\t,暂时看作空格
# header 是指定哪一行做字段名,默认0,即第一行,None 表示没有字段名
df = df.sort(columns=[0], ascending=[1])
# columns 表示按哪些列排序,靠前的优先
# ascending 表示每列的升降序(和columns对应),0为降序,1为升序,如果只有一个,表示所有排序的列都是一样
# df.sort(columns=[1,2], ascending=[0,1]) 表示先按第二列降序,再按第三列升序排序
df.to_csv('b.txt', index=False, sep=' ', header=None, float_format='%f')

csvReader + sort 应该也不太难
[解决办法]

sorted_lines = sorted(open("test.data"), key=lambda l: float(l.split()[0]))
open("test.out", 'w').write("".join(sorted_lines))

[解决办法]
引用:
Quote: 引用:


sorted_lines = sorted(open("test.data"), key=lambda l: float(l.split()[0]))
open("test.out", 'w').write("".join(sorted_lines))


按你的方法更简单,但可能是中间有些模块没有,昨天试了好久都一直有问题。

我想问一下sorted(open("test.data"), key=lambda l: float(l.split()[0])

红色部分是什么意思。谢谢




lambda表达式,相当于给sorted函数指定一个排序方式~

热点排行