perl学习(6) 哈希
来源:互联网 发布:怎么样在淘宝网领金币 编辑:程序博客网 时间:2024/06/05 08:44
哈希在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对的2元素列表。
实践中,一般只在while循环中使用each:
while (($key, $value) = each %hash){
print “$key => $value\n”;
}
#有序输出
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.常用法
- perl学习(6) 哈希
- perl学习日记6哈希
- Perl语言学习笔记 6 哈希
- perl基础学习-哈希
- perl 哈希(hash) 学习笔记
- Perl: 关于学习Perl
- Perl学习笔记 No.6
- perl学习笔记-----------------------(6)
- 学习Perl
- Perl 学习
- perl学习
- Perl学习
- perl学习
- perl 学习
- PERL学习
- Perl学习
- 学习perl
- 学习perl
- 明明的随机数
- java @OneToOne 实例
- 9月手机战 国产手机能否逆袭
- perl学习(5) 输入和输出
- 二维数组排序
- perl学习(6) 哈希
- 八皇后问题|递归|回溯
- 多了个逗号,报错不明确,调了好久
- HDU 3732 多重背包
- Java常用的几种缓存开源框架
- HDU 4723 How Long Do You Have to Draw
- perl学习(7) 正则表达式
- Qt 添加系统托盘
- java.lang.StackOverflowError