早教吧作业答案频道 -->其他-->
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值排序并返回...的网友还看了以下:
某船从A地到B地顺水航行,船速是每小时15千米.这条船到达B地后立即逆水返回A地,船速是每小时10 2020-04-26 …
一艘轮船从A城到B城,顺水航行每小时行20km,返回时每小时行15km.顺水航行和逆水航行的速度比 2020-05-17 …
汽车从A城到B城平均每小时行驶a公里,从B城返回A地平均每小时行驶b公里,问汽车往返A,B地之间一 2020-05-20 …
往返A往返A市和B市的长途汽车以同样的发车间隔从两个城市分别发车,以每小时40公里的速度前往目标城 2020-08-04 …
一列火车往返于芜湖、杭州两个城市,中途经过宣城、广德、长兴南和德清西4个站点(共6个站点),不同的车 2020-11-12 …
全能运动员往返A,B两地进行体能训练,去时步行,每小时走5km,到达后立刻骑车返回,返回时每小时40 2020-11-25 …
甲从A地步行去B地,同时乙从B地骑自行车去A地,1小时后相遇,乙到达A地后立即返回B地,在途中月又追 2020-11-30 …
小学数学A,B,C三个城镇在同一条公路上,B在A与C之间,并且BC=246千,甲,乙二人于中午12时 2020-11-30 …
红星幼儿园原来白皮球是红皮球的3/5,后来又买讲了18个红皮球,这时白皮球是红皮球的3/7,白皮球有 2020-12-16 …
一辆汽车往返A/B两地,往返的速度比是9:8,往返用了3小时,返回用了()小时 2021-01-15 …