我正在寻找一种好方法,在 Perl 中先按值排序,然后再按键排序。
示例:
my %userids = (
williams => "Marketing",
smith => "Research",
johnson => "Research",
jones => "Marketing",
brown => "Marketing",
davis => "Research"
);
输出:
Marketing: brown
Marketing: jones
Marketing: williams
Research: davis
Research: johnson
Research: smith
请注意,值是第一个排序级别。第二个排序级别是键。知道如何以优雅且高性能的方式做到这一点吗?谢谢!
最佳答案
很好的引用:http://www.misc-perl-info.com/perl-sort.html#shv
#!/usr/bin/perl
my %userids = (
williams => "Marketing",
smith => "Research",
johnson => "Research",
jones => "Marketing",
brown => "Marketing",
davis => "Research"
);
foreach (sort { ($userids{$a} cmp $userids{$b}) || ($a cmp $b) } keys %userids)
{
print "$_: $userids{$_}\n";
}
关于perl - 按值和键对哈希进行排序(按顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7791958/