《Perl语言入门》读书笔记(六)哈希

2023-11-16

1.哈希特点

哈希是一种数据结构,与数组相同点,能容纳任意多的值;而哈希的检索方式与数组不同。数组是以数字下标检索,而哈希中的值(value)以唯一的名字(key)检索。

key-value一一对应:

乱序排列,类似一桶数据:

由于检索方式不同,当使用哈希时,能提高对大数据量中的读写性能。

2.哈希的使用

%some_hash = ('foo', 35, 'bar', 12.4, 2.5, 'hello', 'wilma' ,1.77878e12, 'da', "ada\n");    #创建一个哈希数组,以前key后value,一一对应

#改进版创建哈希
my %last_name = (
    'fred'    => 'filtstone',   #  '=>'等效于‘,’,更能区分key与value
    'betty'   => 'rubble',   
    'dino'    => undef,
);

$hash{$some_key};            #访问哈希中的元素

@any_array = %some_hash;     #以无序形式返回键-值对应的列表,key与它对应的value相邻   

3.哈希操作函数

3.1 keys和values函数

keys函数能返回哈希的键列表,values函数能返回对应的值列表。

my %hash = ('foo', 35, 'bar', 12.4, 2.5, 'hello', 'wilma' ,1.77878e12, 'da', "ada\n");  

my @k = keys %hash;  #返回值包含所有奇数位置的key

my @v = values %hash;#返回所有偶数位置的value,返回顺序不固定,但key与value的相对位置保持一致

3.2 each函数

 each函数能遍历哈希中的每个键-值对,返回两个元素,一个是键名,一个是值。

while (($key,$value) = each %hash){
    print"$key => $value\n";
}

3.3 exists函数

若要检查哈希中是否存在某个键,可以使用exists函数检查,键存在就会发返回真,键不存在返回假,与值无关。

if (exists $books{"dino"}){
    print"Hey,there's a library card for dino!\n";
}

3.4 delete函数

delete函数能从哈希中删除指定的键与对应的值。

my $person = "dada";
delete $book{$person}; #该键-值对被删除

3.5哈希元素内插

foreach $person (sort keys $books){
    if($books{$person}){
        print"$person has $books{$person} item\n";
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Perl语言入门》读书笔记(六)哈希 的相关文章

  • What does assigning ‘shift‘ to a variable mean?

    原文链接 https stackoverflow com questions 7082811 what does assigning shift to a variable mean 7082897 Example use strict m
  • 10000+ppt免费下载领取(python爬取全站ppt)

    1 缘由 前几天参加一个活动 需要制作ppt 制作完之后ppt模板死活不能让人满意 然后就去网上找模板 有些比较适合ppt模板还是收费的 这 有点恶心 哈哈哈 今天教大家如何使用python爬虫爬取1万份 ppt模板 以后制作ppt再也不怕
  • python 集合操作 set

    发现在用python进行机器学习数据挖掘的时候经常用到set 在网上收了一些资料 http blog csdn net business122 article details 7541486 http www cnblogs com xia
  • 【脚本语言系列】关于Python统计分析statsmodel,你需要知道的事

    如何使用statsmodel 安装statsmodel 使用easy install或pip安装statsmodels easy install U statsmodels pip install U statsmodels 使用源代码安装
  • Vue 团队公开快如闪电的全新脚手架工具,未来将替代 Vue-CLI,才300余行代码,学它!...

    1 前言 大家好 我是若川 欢迎关注我的公众号若川视野源码共读活动ruochuan12 想学源码 极力推荐之前我写的 学习源码整体架构系列 jQuery underscore lodash vuex sentry axios redux k
  • 编程语言与脚本语言的理解

    计算机语言和自然语言一样是交流的工具 只是在计算机快速发展的当今社会 计算机语言显得格外的重要 而对于一些从事IT行业的的菜鸟而言 听到的语言特别多 比喻说什么 java c c js c html 等等 一般会产生一定的疑惑 下面就编程语
  • Python 四五事

    介绍 Python 相关工具 工作流程和测试框架 最后更新 2014 1 19 引言 接续着之前的文章 虽然隔得比较久 本文继续介绍以 Windows 平台为背景的 Python 开发相关的工具 希望能对你有所帮助 另外很多东西本文都是延续
  • 配置wsl外网访问(实操步骤)

    介绍 wsl存在一个ip1 window存在一个ip2 ip1无法ping通与ip2处于同一网段下的ip 此种情况下 涉及到网络通信相关的开发就比较困难 本文介绍配置wsl外网的访问 操作步骤 获取wsl的ip 管理员身份在powershe
  • win10开机自动运行bat脚本

    windows10开机自动运行bat脚本 win r gpedit msc打开策略制 然后添加 如果你的bat文件的命令是启动其他文件 如下 启动其它程序 start xxx exe 启动vm虚拟机 chcp 65001 C Program
  • 使用Object.setPrototypeOf()设置对象的原型

    此方法可以设置对象的原型 Object setPrototypeOf方法是针对对象实例的 而不是构造函数 类 此方法修改的是对象实例的内部属性 prototype 也就是 proto 属性所指向的对象 它只是修改了特定对象上的原型对象 对于
  • adb通过网络连接

    1 使用USB数据线连接设备 2 在命令行输入adb tcpip 5555 5555为端口号 可以自由指定 3 断开 USB数据 此时可以连接你需要连接的 USB设备 4 再计算机命令行输入 adb connect lt 设备的IP地址 g
  • VCS+MATLAB联合仿真

    原文链接 https www youtube com watch v ujSBTA3v8eA 算法工程通常会用Matlab来建模 Digital designer会将Matlab model 作为golden model 进行设计和验证 面
  • Speed up calculation by running in parallel

    原文链接 https perlmaven com speed up calculation by running in parallel In this example we have a bunch of numbers We need
  • 使窗口只第一次访问时弹出

    有时为了某种需要 要求进入一个页面时弹出一个窗口 但每次进入时都会弹出 就使人感受到烦 怎样实只弹出一次呢 下面的程序将实现浏览才第一次访问这页时弹出窗口 以后再进入则不会弹出 在 之间加入下列代码
  • 《Perl语言入门》读书笔记(四)子程序

    1 子程序 1 1 定义子程序 使用关键字sub开头 在写上子程序名 字母 数字和下划线组成 不能以数字开头 大括号框柱子程序主体 子程序可以定义在文件的任意位置 为了方便代码阅读 一般建议放在开头或结尾处 sub marine n 1 全
  • CTF show WEB7-8

    题目网站https ctf show web7 点开其中一篇文章 输入id 1 1存在全部文章内容 说明为整形注入 1 爆库名 web7 当输入为id 1 or ascii substr database 1 1 119时出现文章内容 证明
  • lua学习笔记之详解lua堆栈

    原文连接 http blog csdn net musicvs article details 8440707 1 Lua的堆栈和全局表 我们来简单解释一下Lua的堆栈和全局表 堆栈大家应该会比较熟悉 它主要是用来让C 和Lua通信的 是的
  • TCL变量

    目录 简单变量 数组 相关命令 set unset append和incr 简单变量 一个 TCL 的简单变量包含两个部分 名字和值 名字和值都可以是任意字符串 例如一个名为 1323 7 hdgg 的变量在 TCL 中都是合法的 不过为了
  • 《Perl语言入门》读书笔记(六)哈希

    1 哈希特点 哈希是一种数据结构 与数组相同点 能容纳任意多的值 而哈希的检索方式与数组不同 数组是以数字下标检索 而哈希中的值 value 以唯一的名字 key 检索 key value一一对应 乱序排列 类似一桶数据 由于检索方式不同
  • Windows系统设置每天自动备份指定文件并自动删除七天前的文件(脚本+Windows任务计划)

    Windows系统设置每天自动备份指定文件并自动删除七天前的文件 脚本 Windows任务计划 在生活中和工作中有时候为了避免电脑宕机导致文件丢失常常会使用一些方式去备份文件 今天小编给大家介绍一个方法 用于自动备份指定文件 并删除N天前的

随机推荐

  • VMware15中安装Linux详细教程

    VMware15中安装Linux详细教程 一 搭建VMware环境 1 打开链接 https www vmware com cn html 选择适合自己电脑系统的版本进行下载 2 下载完成后点击文件进行安装 安装界面如图 注 1 安装目录尽
  • 信息安全产品认证

    文章目录 一 引言 二 网络关键设备和网络安全专用产品安全认证证书 2 1 背景 2 2 产品目录 2 3 认证依据标准 2 4 认证机构 2 5 商密产品检测认证目录 与 网络关键设备和网络安全专用产品目录 的关系 三 中国国家信息安全产
  • 20个常见的Java错误以及规避方法

    原文 50 Common Java Errors and How to Avoid Them Part 1 作者 Angela Stringfellow 翻译 雁惊寒 译者注 本文介绍了20个常见的Java编译器错误 每种错误都包含了代码片
  • MKP勒索病毒:了解最新变种mkp,以及如何保护您的数据

    导言 在数字化时代 mkp 勒索病毒成为了网络安全领域的一大威胁 它采用高级加密技术 将您的数据文件锁定 要求支付赎金以解锁 本文将详细介绍 mkp 勒索病毒的工作原理 如何恢复被它加密的数据文件 以及如何采取预防措施来降低受攻击的风险 如
  • lambdaQuery用法

    lambdaQuery用法 LambdaQueryWrapper
  • pandas DataFrame行或列的删除方法

    pandas DataFrame的增删查改总结系列文章 pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pandas DataFrame的修改方法 此文我
  • uniapp之微信小程序开发教程及如何合理使用WebSocket(实时监听)+workman聊天系统+linux系统配置阿里云端口

    添加链接描述 添加链接描述 thinphp6 1 workerman文档 添加链接描述 https www kancloud cn manual thinkphp6 0 1147857 workerman手册 https www worke
  • 软件的最低测试方法

    前言 1 1 引言 对于大部分软件系统 如何测试及有效的测试 是一个很头痛的问题 在软件工程上 测试是软件工程中极其重要的一部分 但在具体的实际情况上 无论是时间 人手及资源的调配等原因 使国内大部分软件公司没有进行过理论上的完整的测试 本
  • JAVA变量与数据类型

    人生不如意之事十有八九 在最好的年纪要努力充实自己 莫等空悲切白了少年头 而是要及时当勉励 岁月不待人 一 java变量 变量概述 1 内存中存储的一个存储区域 2 该存储区域内的数据在同一类型范围内不断变化 3 变量是程序中最基本的存储单
  • 老虎证券美股策略——将动量策略日频调仓改成月频

    最近策略频繁回撤 跑不赢标普500指数 所以对策略简单修改 以待后效 新加入的代码 def get if trade day infile open countday dat r incontent infile read infile c
  • Linux系统中负载较高问题排查思路与解决方法

    Load 就是对计算机干活多少的度量 Load Average 就是一段时间 1分钟 5分钟 15分钟 内平均Load linux服务器出现高负载的情况下 一般都有一些具体的症状 比如cpu 内存等被耗尽 磁盘IO或者网络等出现问题 下面通
  • CentOS7下安装LNMP以及phpMyAdmin

    两种安装 第一种 下载 可以到官网找 版本 https www phpmyadmin net downloads cd 到你要下载的位置 wget https files phpmyadmin net phpMyAdmin 4 4 12 p
  • Maven中pom文件内scope标签中import、parent 、dependencies、dependencyManagement详解

    首先介绍parent 如果父项目中有这些依赖
  • linux-sed命令

    目录 1 linux shell sed获取某一段字符串 2 linux shell shell脚本中 sed n取出某一行赋给一个变量 3 linux shell sed查询某一行 1 linux shell sed获取某一段字符串 如果
  • 网络层(四)

    网络层 我们说过 网络层主要讲的就是ip编址和路由选择算法 更准确的说 应该是网际IP协议 网际IP协议主要说明了各个主机和服务器的ip编址规则 了解IP编址前 我们需要知道IP数据报 IP数据报在网络层中传输 我们看一下IP数据报的结构
  • STM32F103ZET6【标准库函数开发】------PB3,PB4当做普通IO口,重定义

    一 如题 我在设计原理图的时候将PB3和PB4当做了普通IO口 结果按照一般配置的方法操作后 PB3 PB4并没有输出自己想要的信号 配置如下 void MOTOR GPIO Init void 初始化 GPIO InitTypeDef G
  • 人社练兵比武怎样挣积分 python 源码在线答题源码

    可以自动答题积分 不明白如何用的可以联系我 下面2个函数是学练习的 需要用的库为selenium time re pickle 题库需要收集 def dan 单选或多选 j browser find element by xpath id
  • java绘制(可视化)树结构图

    以JPanel组件为画板 继承JPanel类并重写paint Graphics g 函数 在函数中使用画笔g绘制树结构图 实例代码 3个java源文件 Main java DrawNode java DrawTree java 1 Main
  • 周订单量趋势

    周订单量趋势 PreAuthorize hasAuthority admin statistics home chart order week ApiOperation value 周订单量趋势 RequestMapping value c
  • 《Perl语言入门》读书笔记(六)哈希

    1 哈希特点 哈希是一种数据结构 与数组相同点 能容纳任意多的值 而哈希的检索方式与数组不同 数组是以数字下标检索 而哈希中的值 value 以唯一的名字 key 检索 key value一一对应 乱序排列 类似一桶数据 由于检索方式不同