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

perl学习(6) 哈希

发布时间:2020-12-16 00:08:43 所属栏目:大数据 来源:网络整理
导读:哈希在perl里是很重要的数据结构,现在想想定义三种变量: 1,标量,就是c中的变量:$name 2,列表,就是数组:@list 3,哈希,形式上就是c中的map:%hash ? 1.1. 定义 ? 如果Perl 只有3 个key/value 对,它的速度很快。当拥有3 百万key/value 对时,其速度仍非

哈希在perl里是很重要的数据结构,现在想想定义三种变量:

1,标量,就是c中的变量:$name

2,列表,就是数组:@list

3,哈希,形式上就是c中的map:%hash

?

1.1.定义

?

如果Perl 只有3 个key/value 对,它的速度很快。当拥有3 百万key/value 对时,其速度仍非常快。大的hash 表,对性能不会有什么影响。

?

?

特点:

1.?????? 当将某个值存储在已经存在的hash 元素中,以前的值会被覆盖

2.?????? 如果没有存放值,则其返回undef

?

?

#! /usr/bin/perl

use strict ;

use warnings ;

#声明

my %family_name;

$family_name{"xiaowei"} = "huang";

$family_name{"jialin"} = "wang";

$family_name{"areu"} = "who";

#初始化

my %color = ("red"=>1,"yellow"=>2,"black"=>3 ) ;

?

1.2.函数

#hash function

1.2.1.?? keys,values

my @hashks = keys%color ;????????????? #返回所有的key

my @hashvs = values %color ;??? #返回所有的value

在标量context 中,这些函数返回hash 中元素的个数(key/value)。此类操作不需要访问hash 的每一个元素,其效率是很高。

my $size = keys %color ;????? #得到3,是指有3 key/value

?

1.2.2.?? each 函数

迭代hash 的每一个元素(如,检查每一个元素),一种通常的方法是使用each 函数,它将返回key/value 对的元素列表。

实践中,一般只在while 循环中使用each

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

?????? print “$key => $valuen”;

}

?

#有序输出

foreach my $key (sort keys %color)

{

??? print "$key=>",$color{"$key"},"n";

}

?

1.2.3.?? exists 函数

要查看hash 中是否存在某个key,可以使用exists 函数,如果hash 中存在此key,则返回true,这和是否有对应的value 无关:

if(exists $books{$dino}){

?????? rint “Hey,there’s a libaray card for dino!n”;

}

?

1.2.4.?? delete 函数

delete 函数将某个给定的key(包括其对应的value)从hash 中删除。(如果不存在这个key,则什么也不做,会有警告或者错误信息。)

my $person = “betty”;

delete $books{$person};

1.3.常用法

(编辑:李大同)

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

    推荐文章
      热点阅读