Perl语言入门--5--散列、hash
hash
一、关联数组的形式
%h=('a',1,'b',2); a是key 1是value b是key 2是value
以%开头,()为空散列
%h=('a'=>1,'b'=>2); 更明显一些 用这个还可以省略引号 但默认全部都是字符串 当有数字的时候就不是你的本意了
元素形式:$h{'a'} #注意用$
元素为简单变量,用$。 %h{2.5} %{-1} ${$ee} 都是可以的 小数 负数 简单变量都可以是key
二、 关联数组的赋值
1、标准: %a=('a',1,'b',2);
2、数组与散列间赋值:%h=@a 散列也是数组 只是没有顺序
3、@a=%h 数组元素的顺序随机
4、($a,%h)=@array #不太会用 先把数组的第一个值放进简单变量$a中 再把剩下的放进散列%h中 ,所以@array的个数必须是奇数
5、%h=(%first,%second) #浪费内存
6、%h1=(%h2,'k','v') #增加一组键值,必须成对出现
7、函数的返回,比如split()的返回结果,也可以赋值给散列:
%h=split(/,/,'a,b,c,d')
8、片段:@key=('a','b','c')
@hash{@keys}=@hash{reverse(@keys)}
#注意@不能改为$,因$hash{}中key要求是简单变量,所以括号里面是一个数
而现在我想圈出一个数组,所以前面要变为@,括号里面也是@
都应该前后对应
如果你输入 $hash{@keys} 因为$hash大括号中的key要求是简单变量 这等同于 $hash{@keys的长度} 也就是@hash{3}
三、 元素赋值与操作
1、增加: $h{'a'} = 1 不存在则创建,hash不存在也创建
2、删除:delete $h{'a'}
3、不要用push pop shift splice 等与顺序有关的函数,否则结果不可知
4、显示:不能 print "%hash"; 这样输出的只是字符串:%hash
如用 print %hash 则显示无空格
用遍历的方法来逐一显示
5、$a=%hash $a被赋值为x x是已有的元素数/分配的内存数 没什么卵用
四、关联数组操作函数
key(%h) 或 key %h #返回键列表
value(%h) 或 value %h #返回值列表
each(%h)循环: ($key,$value)=each(%hash)
循环中不要增加或删除元素,因为散列是无序的。循环的最后返回undef
exist:查看关键字是否存在
exist $h{'key'}
undef(%h) : 删除散列 相当于%=()
delete
Perl语言入门--5--散列、hash的更多相关文章
- Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线。
Perl语言入门: 斜线不是元字符,所以在不作为分隔符时不需要加上反斜线.
- 散列(Hash)表入门
一.概述 以 Key-Value 的形式进行数据存取的映射(map)结构 简单理解:用最基本的向量(数组)作为底层物理存储结构,通过适当的散列函数在词条的关键码与向量单元的秩(下标)之间建立映射关系 ...
- StackExchange.Redis帮助类解决方案RedisRepository封装(散列Hash类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明本系列分享地址:http://www.cnblogs.com/tdws/p/5815735.html 上一篇文章的不合理之处,已经有所修改. 今天分 ...
- 散列(hash)
散列(hash)是常用的算法思想之一,在很多程序中都会有意无意地使用到. 先来看一个简单的问题:给出N个正整数,再给出M个正整数,问这M个数中每个数分别是否在N个数中出现过. 例如N=5,M=3,N个 ...
- Redis散列(Hash)的相关命令
散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...
- Perl语言入门14-17
---------第十四章 字符串与排序------------------- index查找子字符串 my $stuff = "howdy world!"; my $where ...
- Perl语言入门
Perl 是 Practical Extraction and Report Language 的缩写,可翻译为 "实用报表提取语言". Perl语法基础: (1)Perl程序由声 ...
- 非对称算法,散列(Hash)以及证书的那些事
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35389657 作者:小马 这几个概念在金融电子支付领域用得比較多,我忽然认为把它们 ...
- Perl 语言入门6-9
---- 第6章 哈希----------- 简介 键值对.键和值都是任意标量,但键总是会被转换成字符串. 键唯一,值可重复. 应用场景:一组数据对应到另一组数据时. 如找出重复/唯一/交叉引用/查表 ...
随机推荐
- wsl基本安装与配置
wsl简介: Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层.它是由微软与Canoni ...
- 学习笔记(二):使用 TensorFlow 的起始步骤(First Steps with TensorFlow)
目录 1.工具包 TensorFlow 张量 (Tensor) 图 (graph) TensorBoard 2.tf.estimator API Estimator 预创建的 Estimator (p ...
- centos启动流程
centos6启动流程 1.主板,post加电自检,检查硬件环境 2.主板选择一个硬盘进行引导,执行mbr446 grub stage1 3.grub stage1.5 加载/boot分区文件系统驱动 ...
- SwaggerUI日常使用
最近公司项目集成springFox,记录一些swaggerUI日常使用,包括数组,文件,默认值,允许值,参数/结果类注解,响应码..等等. 一.参数注解: 单参数:@ApiImplicitParam ...
- MySQL 查询优化之 Block Nested-Loop 与 Batched Key Access Joins
MySQL 查询优化之 Block Nested-Loop 与 Batched Key Access Joins 在MySQL中,可以使用批量密钥访问(BKA)连接算法,该算法使用对连接表的索引访问和 ...
- pycharm安装 suds模块报错:AttributeError: module 'pip' has no attribute 'main'
需求:安装suds模块 遇到的问题: 一.报错信息:[file][Default Settint]---Project Interpreter 点击 搜索suds安装模块报错 解决:依据上图提示找到C ...
- 【Linux命令】nohup和&差异,查看进程和终止进程!
最近在开发dueros的技能,官方提供的PHPSDK中有多个实力,而运行实例的命令如下是 nohup php -S 0.0.0.0:8029 myindex.php & 从命令来看,肯定是在8 ...
- GoF23种设计模式之行为型模式之观察者模式
一.概述 定义对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.二.适用性1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面的时 ...
- drf 视图功能
视图 drf提供的视图功能 自己的第一次封装 #一个功能写成一个类,方便组合,只要继承它就可以有这个功能 #将功能都写在一个类中,可控性就会变差 from book.myserializers imp ...
- Python语言程序设计之二--用turtle库画围棋棋盘和正、余弦函数图形
这篇笔记依然是在做<Python语言程序设计>第5章循环的习题.其中有两类问题需要记录下来. 第一是如何画围棋棋盘.围棋棋盘共有19纵19横.其中,位于(0,0)的星位叫天元,其余8个星位 ...