早教吧作业答案频道 -->其他-->
perl按hash值排序并返回名次比如说这样的文件:a0.1b0.3c0.2d0.3e0.4想要排序后得到这样的文件a0.11c0.22b0.33d0.33e0.45也就是说按数字的大小排序,然后还要返回名次,数字大小一样的名次要
题目详情
perl按hash值排序并返回名次
比如说这样的文件:
a 0.1
b 0.3
c 0.2
d 0.3
e 0.4
想要排序后得到这样的文件
a 0.1 1
c 0.2 2
b 0.3 3
d 0.3 3
e 0.4 5
也就是说按数字的大小排序,然后还要返回名次,数字大小一样的名次要保证一样.
其中第一列的字母是唯一的.
比如说这样的文件:
a 0.1
b 0.3
c 0.2
d 0.3
e 0.4
想要排序后得到这样的文件
a 0.1 1
c 0.2 2
b 0.3 3
d 0.3 3
e 0.4 5
也就是说按数字的大小排序,然后还要返回名次,数字大小一样的名次要保证一样.
其中第一列的字母是唯一的.
▼优质解答
答案和解析
#!/bin/env perl
my @data = map {$_->[0]} sort{$a->[1] $b->[1]} map{[ $_, (split)[1] ]} ;
my $line=1;
my $rank=$line;
my $flag=undef;
for (@data)
{
chomp;
if ($flag != (split)[1])
{
$flag = (split)[1];
$rank = $line;
}
print "$_\t$rank\n";
$line++;
}
__DATA__
a 0.1
b 0.3
c 0.2
d 0.3
e 0.4
my @data = map {$_->[0]} sort{$a->[1] $b->[1]} map{[ $_, (split)[1] ]} ;
my $line=1;
my $rank=$line;
my $flag=undef;
for (@data)
{
chomp;
if ($flag != (split)[1])
{
$flag = (split)[1];
$rank = $line;
}
print "$_\t$rank\n";
$line++;
}
__DATA__
a 0.1
b 0.3
c 0.2
d 0.3
e 0.4
看了perl按hash值排序并返回...的网友还看了以下:
同样序列,测序之后,发现不同我PCR出一个条带,胶回收后拿去测序,一共测了两次,结果都发现找不到引 2020-05-17 …
COD测定——重铬酸钾法实验中遇到的几个问题水样取10ml稀释到50ml,按国标法操作,加入硫酸银 2020-05-17 …
在一个文件中有10G个整数,乱序排序,要求找出中位数。从10G个数中找到中数在一个文件中有10G个 2020-06-23 …
含参函数取到极值后为什么要检验参数如:已知函数f(x)=lnx-1/2ax^2-2x,在x=2处取 2020-07-11 …
已知三个字符为:a、Z和8,按它们的ASCII码值升序排序,结果是.A、8,a,Z已知三个字符为: 2020-07-23 …
如图所示的程序框图,根据该图和下列各小题的条件回答下面的几个小题。(1)该程序框图解决的是一个什么问 2020-10-30 …
在EXCEL2000升序排序中,在排序列中有空白单元格的行会被。A、不被排序B、保持原始次序C、放置 2020-11-24 …
急求C++6.急用!单链表排序与删除设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等 2020-12-05 …
设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的 2020-12-05 …
在Excel中,只以某列为关键字作升序排序时,则该列上有完全相同项的行将A.保持原始次序B.逆序排列 2020-12-05 …