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

perl系列:散列(hash)

发布时间:2020-12-15 21:00:54 所属栏目:大数据 来源:网络整理
导读:数组内存贮的元素是有顺序的,可以从前面或后面进行添加或删除,但不能从中间插入(可以从中间删除)。 散列由键值对组成,其排列是没有顺序的。 %a??? #散列a $a{c}??? #散列a中键c对应的值,注意括号的类型 keys %a??? #获取散列a的所有键,以数组形式返回
数组内存贮的元素是有顺序的,可以从前面或后面进行添加或删除,但不能从中间插入(可以从中间删除)。

散列由键值对组成,其排列是没有顺序的。

%a??? #散列a
$a{c}??? #散列a中键c对应的值,注意括号的类型
keys %a??? #获取散列a的所有键,以数组形式返回
values %a??? #获取散列a的所有值,以数组形式返回

使用列表给散列赋值
????%a=(键,值,键,值);??? #实质是使用一个列表
????%a=(键=>值,键=>值);??? #效果相同,但视觉效果更好
??? %a=@c ;

散列赋值给数组
@a=%b;??? #所有键值对展开成列表

散列键值互换
??? %a=reverse %b;??? #应该在所有的值不重复的时候使用,否则难以预料后果

遍历散列
??? while (($k,$v)=each %a) {;} ?? #一次返回一个键值对,直至全部访问

查看某个键是否存在
??? exists $a{c};??? #在散列a中查看键c是否存在,若有则返回真,即使该键对应的值为undef。
??? %a=(1..3);
????if ($a{3}) {print "tn";} else {print "fn";}??? #键“3”没有赋值,因此其值为undef,返回假
????if (exists $a{3}) {print "tn";} else {print "fn";}??? #虽然键“3”对应的值为undef,但该键是存在的,因此返回真

删除某个键
??? delete $a{c};??? #删除散列a中的键c
??? $a{c}=undef;??? #赋值为undef并不能删除该键

关于双引号字符串内的替换 ??? 由于%在双引号内没有特殊意义,所以不能替换整个散列。

(编辑:李大同)

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

    推荐文章
      热点阅读