代码之家  ›  专栏  ›  技术社区  ›  Game_Overture

如何对值为数组引用的Perl哈希进行排序?

  •  3
  • Game_Overture  · 技术社区  · 15 年前

    嘿,我只是想知道是否有一个很酷的“一行程序”可以对我的哈希持有数组引用进行排序。所以我的散列表中有一些键/值,比如:

    $DataBase{$key} = \@value;
    

    不过,我想按 array[0] 元素。然后把它们循环一遍。我从以下几点开始:

    foreach my $key (sort {$DataBase{$a} cmp $DataBase{$b} } keys %DataBase)
    

    但这显然只是根据数组的指针值对散列进行排序。它不一定是“一行”,但我希望得到一个不涉及重建散列的解决方案。

    3 回复  |  直到 14 年前
        1
  •  8
  •   chaos    15 年前
    foreach my $key (sort {$DataBase{$a}->[0] cmp $DataBase{$b}->[0] } keys %DataBase)
    
        2
  •  2
  •   nxadm    15 年前

    对于记录(您可能来自C背景),Perl没有指针,但是 references :

    Perl[…]允许您创建 匿名数据结构,以及 支持基本数据类型 称为“参考”,不严格地说 相当于C指针。就像C一样 指针也可以指向数据 过程,Perl的引用可以 参考常规数据类型 (标量、数组和哈希)和 其他实体,如子例程, 类型球和文件句柄。不像C, 他们不让你偷看和戳 原始内存位置。

    相似,但不相同。

    C.

        3
  •  1
  •   Community CDub    7 年前

    我想你问的基本问题和 How can I sort a hash-of-hashes by key in Perl? . 我的答案(在PerlFAQ中)向您展示了如何按照您喜欢的任何方式对哈希进行排序。