哈希表(Hash)的应用
$hs=@() #定义数组
$hs=@{} #定义Hash表,使用哈希表的键可以直接访问对应的值,如 $hs["王五"] 或者 $hs.王五 的值为 75
$hs=@''@ #定义文本字符串
$hs = @'
张三
男
12岁
'@
################################
Hash表的新建、修改、删除:
#新建Hash表
$rs=@{ Name="Lily";score=90 ; Age=20 }
$rs $rs = @{}
$rs.name="Lily"
$rs.score=90
$rs #添加键值
$rs.age=20
$rs #删除键值
$rs.remove("age")
$rs
Hash表嵌套:
$infors = @{}
$infors.pc1=@{cpu='intel';
mem='4GB'}
$infors.pc2=@{cpu='amd';
mem='2GB'}
$infors.pc2.cpu
#取pc1的值
$infors.pc1
$infors["pc1"]
取Hash表中的值:

遍历Hash表:
Hash表中的内容不能直接被当做对象来使用,需要进行转换
#定义Hash表
$hash=@{"name"="ff"}
$hash.Add("dd","fffff")
遍历Hash表:
#方法一:
foreach($obj in $hash.Keys)
{
$obj
$hash[$obj]
} #方法二:
foreach($obj in $hash)
{
$obj.GetEnumerator()|%{$_.name;$_.value}
} #方法三(复制到数组):
$array=New-Object System.Object[] -ArgumentList $hash.Count
$hash.CopyTo($array,0)
$array
################################
举例:使用Hash表取出分数相同的学生
文件cc.txt内容如下:
李一 93
王二 83
王三 93
李四 60
王五 75
马六 61
孙七 75
刘八 75
将文件cc.txt中的内容保存到Hash表中:
$hs=@{}
Get-Content d:\cc.txt | ForEach-Object {
$line = $_ -split " "
$hs[$line[0]]= $line[1]
}
$hs
结果如下:

通过 group-object 对成绩分组:
$hs|%{$_.getenumerator()|group value|?{$_.count -gt 1}|%{$_.group}}

判断Hash表中是否存在某个值:
$hs.contains()

格式化输出:
#改变列标题为Name,所有ProcessName输出为大写格式,下面两种写法输出结果相同:
get-process|select id,@{Label="Name";Expression={@($_.Processname.toupper())}}|ft -AutoSize
get-process|select id,@{Label="Name";Expression={$_.Processname.toupper()}}|ft -AutoSize

#将ProcessName列标题名称改为Name
get-process|select id,@{Label="Name";Expression="ProcessName"}
参考:http://www.pstips.net/powershell-using-hash-tables.html #创建Hash表
http://www.pstips.net/powershell-convert-hashtable-to-object.html #将Hash表转换为对象
http://www.cnblogs.com/fmyuan2000/archive/2010/04/22/1717952.html #遍历Hash表
哈希表(Hash)的应用的更多相关文章
- 算法与数据结构基础 - 哈希表(Hash Table)
Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...
- PHP关联数组和哈希表(hash table) 未指定
PHP有数据的一个非常重要的一类,就是关联数组.又称为哈希表(hash table),是一种很好用的数据结构. 在程序中.我们可能会遇到须要消重的问题,举一个最简单的模型: 有一份username列表 ...
- (四)Redis哈希表Hash操作
Hash全部命令如下: hset key field value # 将哈希表key中的字段field的值设为value hget key field # 返回哈希表key中的字段field的值val ...
- 词典(二) 哈希表(Hash table)
散列表(hashtable)是一种高效的词典结构,可以在期望的常数时间内实现对词典的所有接口的操作.散列完全摒弃了关键码有序的条件,所以可以突破CBA式算法的复杂度界限. 散列表 逻辑上,有一系列可以 ...
- 数据结构,哈希表hash设计实验
数据结构实验,hash表 采用链地址法处理hash冲突 代码全部自己写,转载请留本文连接, 附上代码 #include<stdlib.h> #include<stdio.h> ...
- Redis原理再学习04:数据结构-哈希表hash表(dict字典)
哈希函数简介 哈希函数(hash function),又叫散列函数,哈希算法.散列函数把数据"压缩"成摘要,有的也叫"指纹",它使数据量变小且数据格式大小也固定 ...
- 什么叫哈希表(Hash Table)
散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的数组叫做散列表. - 数据结构 ...
- 数据结构 哈希表(Hash Table)_哈希概述
哈希表支持一种最有效的检索方法:散列. 从根来上说,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素. 哈希表的主要思想是通过一个哈希函数,在所有可能的键与槽位之间建立一张映射表.哈希 ...
- golang数据结构之散哈希表(Hash)
hash.go package hash import ( "fmt" ) type Emp struct { ID int Name string Next *Emp } //第 ...
随机推荐
- 基于JavaScript的REST客户端框架
现在REST是一个比较热门的概念,REST已经成为一个在Web上越来越常用的应用,基于REST的Web服务越来越多,包括Twitter在内的微博客都是用REST做为对外的API,先前我曾经介绍过“基于 ...
- PHP 转义详解
php中数据的魔法引用函数 magic_quotes_gpc 或 magic_quotes_runtime 设置为on时,为我们引用的数据碰到 单引号' 和 双引号" 以及 反斜线\ 时自 ...
- Python状况:为什么PyPy是Python的未来?
Python 现在已经不仅仅是胶水脚本语言了. 不信?看看下面使用Python的成功案例: YouTube - 主要由 Python编写 NASA Industrial Light & Mag ...
- storm流式大数据处理流行吗
在如今这个信息高速增长的今天,信息实时计算处理能力已经是一项专业技能了,正是因为有了这些需求的存在才使得分布式,同时具备高容错的实时计算系统Storm才变得如此受欢迎,为什么这么说呢?下面看看新霸哥的 ...
- 数往知来 JavaScript<十三>
一.javaScript 语法:大小写敏感,弱类型(所有类型都用var进行引导.声明) 写在<script></script>标签里 不可以放在title里 var num= ...
- 数往知来 SQL SERVER 基本语法<七>
sqlserver学习_01 启动数据库 开始->cmd->进入控制台 sqlcmd->-S .\sqlexpress 1> 如果出现表示数据库"sqle ...
- AI线性图标教程-转起
- 2013年19个最棒的HTML5网站模板免费下载
上次我们整理了14个HTML5奉献给大家下载了,今天我再给大家整理了19个2013最新的HTML5模板供有需要的朋友下载使用,它们涉及不同的行业的模板需求,支持手机设备,十分精美! 1. Affini ...
- Module compiled with Swift 3.0 cannot be imported in Swift 3.0.1
Cartfile:github "SwiftyJSON/SwiftyJSON"got error:Module compiled with Swift 3.0 cannot be ...
- 全面理解Linux输入输出重定向
全面理解Linux输入输出重定向 本教程通过视频方式讲解shell操作,理解感念,教程通俗易懂,比起看一大堆文档要舒服的多.本次教程主要讲解 Linux Shell 中支持输入输出重定向,用符号&l ...