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

在Perl中,如何处理整个哈希?

发布时间:2020-12-15 21:57:42 所属栏目:大数据 来源:网络整理
导读:我想在Perl中处理哈希表的所有元素.我怎样才能做到这一点? 这是official perlfaq的一个问题.我们是importing the perlfaq to Stack Overflow. 解决方法 (这是 official perlfaq answer,减去任何后续编辑) 有几种方法可以处理整个哈希.您可以获取keys的列表,
我想在Perl中处理哈希表的所有元素.我怎样才能做到这一点?

这是official perlfaq的一个问题.我们是importing the perlfaq to Stack Overflow.

解决方法

(这是 official perlfaq answer,减去任何后续编辑)

有几种方法可以处理整个哈希.您可以获取keys的列表,然后浏览每个键,或一次获取一个键值对.

要浏览所有密钥,请使用keys function.这将提取哈希的所有密钥并将其作为列表返回给您.然后,您可以通过正在处理的特定键获取值:

foreach my $key ( keys %hash ) {
    my $value = $hash{$key}
    ...
    }

获得密钥列表后,可以在处理哈希元素之前处理该列表.例如,您可以对键进行排序,以便按词法顺序处理它们:

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

或者,您可能只想处理某些项目.如果你只想处理以text:开头的键,你可以选择那些使用grep的键:

foreach my $key ( grep /^text:/,keys %hash ) {
    my $value = $hash{$key}
    ...
    }

如果哈希非常大,您可能不想创建一长串密钥.为了节省一些内存,你可以使用each()一次获取一个键值对,它返回一个你还没有看到的对:

while( my( $key,$value ) = each( %hash ) ) {
    ...
    }

每个操作符以明显随机的顺序返回对,因此如果订购对您很重要,则必须坚持使用keys方法.

each()运算符虽然有点棘手.在使用它时,您无法添加或删除哈希的键,而不会在Perl内部重新处理所有元素后跳过或重新处理某些对.另外,哈希只有一个迭代器,所以如果你在同一个哈希上使用keys,values或each,你可以重置迭代器并弄乱你的处理.有关详细信息,请参阅perlfunc中的each entry.

(编辑:李大同)

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

    推荐文章
      热点阅读