【问题标题】:Basic Perl hash sorting by key, by value, but also by key AND value基本的 Perl 散列排序键,值,但也键 AND 值
【发布时间】:2015-01-16 11:17:24
【问题描述】:

好的,我正在编写一个 Perl 程序,它有一个我收集的值的哈希值(完全在一个完全独立的程序中)并提供给这个 Perl 脚本。这个散列是 (string,string) 的散列。

我想通过 3 种方式对值进行排序:首先,我想按键排序。我认为这很容易,您完全按照您的想法进行操作,使用 Perl 的内置排序功能,循环键,并在排序时打印/存储/任何内容。

foreach my $name (sort keys %planets) {
    printf "%-8s %s\n", $name, $planets{$name};
}

其次,我想按值排序。同样,这很简单,使用 sort 函数并循环:

foreach my $name (sort { $planets{$a} <=> $planets{$b} } keys %planets) {
    printf "%-8s %s\n", $name, $planets{$name};
}

第三,我的问题是,我如何按值排序,但是对于两个键之间的值中的任何关系,我首先排序具有更大的值Asciibetical 键。示例:

Red => 50
Yellow => 75
Blue => 75

is sorted to this, since 'Yellow' is greater asciibetically than 'Blue' 
Red 50
Blue 75
Yellow 75

【问题讨论】:

    标签: perl sorting hash


    【解决方案1】:

    在平局上,比较运算符将返回 0,因此您可以使用 || 链接多个比较:

     sort { $planets{$a} <=> $planets{$b} || $a cmp $b }
    

    【讨论】:

    • 嘿,现在看看这个。正在阅读和考虑您的答案!
    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 2014-11-07
    • 2014-05-07
    • 2014-05-19
    • 2011-12-13
    • 2023-03-25
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多