gpt4 book ai didi

perl - 反转哈希、获取其键并排序

转载 作者:行者123 更新时间:2023-12-02 09:26:26 26 4
gpt4 key购买 nike

我还在学习 Perl,所以可能有更有效的方法来做到这一点。我正在尝试获取哈希值,将其反转,以便 $values => $keys,获取新键(旧值),然后对这些键进行排序。

这是有问题的代码:

foreach my $key (sort keys reverse %hash){

...}

我期望发生的是反向 %hash 将返回一个哈希类型,这就是键正在寻找的类型。但是,我收到以下错误:

arg 1 到键的类型必须是散列(不是反向)

我尝试在反向 %hash 周围加上括号,但仍然得到相同的结果。

有什么想法为什么这行不通吗?

最佳答案

Perl 函数可以返回标量值或列表;没有明确的哈希返回类型(您可以从子例程中调用return %hash,但 Perl 隐式地从哈希中展开键值对并将它们作为列表返回)。

因此,reverse %hash 的返回值是一个列表,而不是哈希,并且不适合用作 keys 的参数。您可以强制 Perl 将此列表解释为带有 %{{}} 转换的哈希:

foreach my $key (sort keys %{{reverse %hash}}) { ... 

您还可以通过说对哈希值进行排序

foreach my $key (sort values %hash) { ...

使用 values %hash 与使用 keys %{{reverse %hash}} 略有不同,因为 keys %{{reverse %hash}} 不会返回任何重复的值。

关于perl - 反转哈希、获取其键并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com