加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl,将哈希转换为数组

发布时间:2020-12-15 21:20:33 所属栏目:大数据 来源:网络整理
导读:如果我在Perl中有一个包含完整和顺序整数映射的哈希(即,从0到n的所有键都映射到某个东西,这个外面没有键),是否有一种将其转换为数组的方法? 我知道我可以迭代键/值对并将它们放在一个新的数组中,但有些东西告诉我应该有一个内置的方法来做到这一点。 解
如果我在Perl中有一个包含完整和顺序整数映射的哈希(即,从0到n的所有键都映射到某个东西,这个外面没有键),是否有一种将其转换为数组的方法?

我知道我可以迭代键/值对并将它们放在一个新的数组中,但有些东西告诉我应该有一个内置的方法来做到这一点。

解决方法

如果你的原始数据源是一个哈希:
# first find the max key value,if you don't already know it:
use List::Util 'max';
my $maxkey = max keys %hash;

# get all the values,in order
my @array = @hash{0 .. $maxkey};

或者如果您的原始数据源是hashref:

my $maxkey = max keys %$hashref;
my @array = @{$hashref}{0 .. $maxkey};

这个例子很容易测试:

my %hash;
@hash{0 .. 9} = ('a' .. 'j');

# insert code from above,and then print the result...
use Data::Dumper;
print Dumper(%hash);
print Dumper(@array);

$VAR1 = {
          '6' => 'g','3' => 'd','7' => 'h','9' => 'j','2' => 'c','8' => 'i','1' => 'b','4' => 'e','0' => 'a','5' => 'f'
        };
$VAR1 = [
          'a','b','c','d','e','f','g','h','i','j'
        ];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读