【P20】Perl哈希
image.png(1)哈希简介
image.pngimage.png
image.png
image.png
image.png
image.png
image.png
@是数组,%是哈希
依次往下,所以运行可能比较慢
一一对应,不从上往下累加
【P21】Perl哈希的操作
不推荐下一个赋值方法,可能与前面有重合image.png
image.png
这种一般是结合foreach才使用
这里与Python不同,B仅仅赋值给A,其中一个改变对另一个不会有影响
image.png
image.png
这里food有引号,所以用了反斜杠
大括号之间有逗号隔开
image.png
注意:这里加不加引号都不会将数字123打印出来,会默认加上引号(健默认加引号)
这里是对单个进行修改
如果对整个进行修改的话会覆盖原来的hash
image.png
如果一个hash有多个健,删除一级键,后面的是否会保留:看例子
image.png
image.png
image.png
image.png
image.png
image.png
hashB打印出来的是一个地址。因为有多重关系。
add之后
多了一个lesson,【看看例子】
hashB:同样出现了96。说明hash可以有一维的 ,也允许有二维的hash存在。可以不统一。hash使用非常灵活
delete fruit:后面的二级hash也被删除了。
delete book green后,好像地址没有变化,但是green已经不在了。
image.png
image.png
image.png
image.png
image.png
image.png
注意看food值不一样,也就是后面会覆盖前面的
【23】Perl哈希函数
image.png这个时候,flag值为1.如果是空值的话,返回值也是1
image.png
image.png
image.png
image.png
each相当于读取一个地址,且每次读取完后会向下跳一个空格。hash定了之后,地址就定了。
他会一级一级往下走,直到没有了。
while里面每次进行取值操作,打印出来。
image.png
image.png
image.png
来自系统变量
键变成值,值变成键
image.png
image.png
image.png
image.png
image.png
将hash_A键和列表取出来,形成数组,然后赋值给key
下面是一样的
这里的下一级键指的是,只能取到第一级健,取不到第二级键。
打印hash键,打印hash值
如果想打印hash后面的值的话,就得用下面这个代码
首先取得第一级键,打印出来,然后对其和hashB组合到一起,形成新的hash。然后此时再打印出来,就可以了。
注意hash的键和值是随机的,按照系统最优选择
这里没有hashB中没有按照顺序来。
image.png
image.png
多维的取的是下一级的地址,也就是第一级的地址
对于value可以理解成,foreach结合key来使用一次。打印出来的跟这个结果是一样的
【23】Perl哈希的使用
image.png返回的是一级键
image.png
image.png
1/8:1指得是这个hash所使用内存,8指的是系统分配给hash的内存。
1/8不是长度,而是使用效率
image.png
这两个是将hash的键取出来,变成数组,然后求数组的长度
image.png
字符串,数值排序
image.png
image.png
image.png
将hash中key(键)取值变成数组key,然后sort排序(这里是按照字符串)
image.png
这里不能直接sort{$a...$b},如果这样的话,取值是键。
加上Shash_class{S a}代表取值是数字。也就是值。
这两个数值相同,排序是随机的,如果要有顺序的话,最后面的限定
image.png
image.png
这三个代表同一个地址
image.png
image.png
image.png
image.png
image.png
image.png
【24】Perl哈希的综合实例
image.pngimage.png
image.png
image.png
总共有176行,前面是给定的hash。第一级键是学生姓名。第二级键是各科成绩。No是学号
image.pngimage.png
image.png
其他的都是一样的遍历
image.png
image.png
image.png
image.png
image.png
image.png
网友评论