You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何按末尾浮点数降序排序标准输出并保留格式?

按末尾浮点数降序排序标准输出内容的简便方法

首先,先看你给出的待排序标准输出内容:

seventy-five 0.050 states 0.719 drainage-basin 0.037 scotland 0.037 reading 0.123 thirty-eight 0.000 almost 0.037 rhine 0.000 proper 0.037 contrary 0.087

作为Python新手,你完全不用提前把整个内容转成复杂列表再排序,不管是用Python脚本还是命令行工具,都能轻松搞定,而且完美保留原格式!

方法一:Python脚本处理(更贴合Python场景)

这个脚本直接读取标准输入,用生成器分组(不用一次性加载所有数据到内存),按浮点数降序排序后输出:

import sys

# 读取标准输入的所有内容,按空格拆分
elements = sys.stdin.read().split()
# 用生成器按「词+浮点数」分组,转成(浮点数, 词)的元组方便排序
groups = ((float(elements[i+1]), elements[i]) for i in range(0, len(elements), 2))
# 按浮点数降序排序
sorted_groups = sorted(groups, key=lambda x: -x[0])
# 按原格式拼接输出
output = " ".join(f"{word} {num:.3f}" for num, word in sorted_groups)
print(output)

使用方法:把脚本保存为sort_output.py,然后通过管道把你的标准输出内容传给它:

echo "seventy-five 0.050 states 0.719 drainage-basin 0.037 scotland 0.037 reading 0.123 thirty-eight 0.000 almost 0.037 rhine 0.000 proper 0.037 contrary 0.087" | python sort_output.py

运行后会输出排序后的结果:

states 0.719 reading 0.123 contrary 0.087 seventy-five 0.050 drainage-basin 0.037 scotland 0.037 almost 0.037 proper 0.037 thirty-eight 0.000 rhine 0.000

方法二:命令行工具快速处理(无需写Python脚本)

如果不想写脚本,用awk+sort组合命令就能直接搞定,一行命令就行:

echo "seventy-five 0.050 states 0.719 drainage-basin 0.037 scotland 0.037 reading 0.123 thirty-eight 0.000 almost 0.037 rhine 0.000 proper 0.037 contrary 0.087" | awk '{for(i=1;i<=NF;i+=2) print $(i+1), $i}' | sort -nr | awk '{print $2, $1}' | tr '\n' ' '

简单解释下这个命令的逻辑:

  • 用awk把每组的「浮点数+词」调换位置输出,方便按数字排序
  • sort -nr按浮点数降序排序
  • 再用awk把位置调换回「词+浮点数」
  • tr '\n' ' '把换行符换成空格,还原成原输出格式

内容的提问来源于stack exchange,提问作者Jim Ye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:06:36