哈希表(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 } //第 ...
随机推荐
- Undefined symbols for architecture armv7
xcode编译过程中出现如下问题Undefined symbols for architecture armv7:... ld: symbol(s) not found for architectur ...
- C++重要知识点小结---3
C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...
- Drupal如何实现类的自动加载?
Drupal通过spl_autoload_register()注册类加载器实现自动加载: function _drupal_bootstrap_database() { // ... .... spl ...
- Drupal如何SQL查询传递参数?
Drupal使用称之为“placeholder”的方式处理SQL查询参数: <?php // WRONG: $result = db_query("SELECT nid, title ...
- 【LeetCode】232 & 225 - Implement Queue using Stacks & Implement Stack using Queues
232 - Implement Queue using Stacks Implement the following operations of a queue using stacks. push( ...
- 积累PDU
PDU,即专业发展单元PDUs(Professional Development Units)用来量化PMP所参与的学习和专业服务活动.典型情况下,每个小时所进行的有计划的.系统的学习或专业活动可获得 ...
- dom 冒泡事件
<!doctype html> <html> <head> <meta charset="utf-8"> <style> ...
- Python 代码性能优化技巧(转)
原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...
- ntpd和ntpdate
以无GUI 的Ubuntu 为例 1. ntpdate ntpdate是Ubuntu发行版的标配.按Ubuntu14.04的官方文档(这里),Ubuntu在启动时,会调用ntpdate,根据Ubunt ...
- 【转】log4j详解及简易搭建
原文链接:http://www.cnblogs.com/mailingfeng/archive/2011/07/28/2119937.html log4j是一个非常强大的log记录软件. 首先当然是得 ...