当前位置:  开发笔记 > 编程语言 > 正文

如何自然地对哈希键进行排序?

如何解决《如何自然地对哈希键进行排序?》经验,为你挑选了2个好方法。

我有一个Perl哈希,其键以数字开头,或者是数字.

如果我用,

foreach my $key (sort keys %hash) {
    print $hash{$key} . "\n";
}

列表可能会出现,

0
0001
1000
203
23

代替

0
0001
23
203
1000

Paul Tomblin.. 39

foreach my $key (sort { $a <=> $b} keys %hash) {
    print $hash{$key} . "\n";
}

排序操作采用可选的比较"子程序"(作为代码块,如我在此处所做的,或子程序的名称).我提供了一个在线比较,使用内置的数字比较运算符'<=>'将键视为数字.



1> Paul Tomblin..:
foreach my $key (sort { $a <=> $b} keys %hash) {
    print $hash{$key} . "\n";
}

排序操作采用可选的比较"子程序"(作为代码块,如我在此处所做的,或子程序的名称).我提供了一个在线比较,使用内置的数字比较运算符'<=>'将键视为数字.



2> Schwern..:

保罗的答案对于数字来说是正确的,但是如果你想更进一步,将混合的单词和数字分类为人类的意愿,既cmp不会<=>也不会.例如...

  9x
  14
  foo
  fooa
  foolio
  Foolio
  foo12
  foo12a
  Foo12a
  foo12z
  foo13a

排序::自然地处理提供nsortncmp例程的这个问题.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有