哈希表(Hash)的應用

$hs=@() #定義數組html

$hs=@{} #定義Hash表,使用哈希表的鍵能夠直接訪問對應的值,如 $hs["王五"] 或者 $hs.王五 的值爲 75shell

$hs=@''@ #定義文本字符串數組

1 $hs = @'
2 張三
3 4 12歲
5 '@

################################spa

 

Hash表的新建、修改、刪除:.net

 1 #新建Hash表
 2 $rs=@{ Name="Lily";score=90 ; Age=20 }
 3 $rs
 4 
 5 $rs = @{}
 6 $rs.name="Lily"
 7 $rs.score=90
 8 $rs
 9 
10 #添加鍵值
11 $rs.age=20
12 $rs
13 
14 #刪除鍵值
15 $rs.remove("age")
16 $rs

Hash表嵌套:3d

 1 $infors = @{}
 2 $infors.pc1=@{cpu='intel';
 3         mem='4GB'}
 4         
 5 $infors.pc2=@{cpu='amd';
 6         mem='2GB'} 
 7         $infors.pc2.cpu
 8 
 9 #取pc1的值        
10 $infors.pc1
11 $infors["pc1"]

取Hash表中的值:code

 

遍歷Hash表:htm

Hash表中的內容不能直接被當作對象來使用,須要進行轉換
對象

1 #定義Hash表
2 $hash=@{"name"="ff"}
3 $hash.Add("dd","fffff")

遍歷Hash表:blog

 1 #方法一:
 2 foreach($obj in $hash.Keys)
 3 {
 4     $obj
 5     $hash[$obj]
 6 }
 7 
 8 #方法二:
 9 foreach($obj in $hash)
10 {
11     $obj.GetEnumerator()|%{$_.name;$_.value}
12 }
13 
14 #方法三(複製到數組):
15 $array=New-Object System.Object[] -ArgumentList $hash.Count
16 $hash.CopyTo($array,0)
17 $array

 

################################

舉例:使用Hash表取出分數相同的學生

文件cc.txt內容以下:

李一 93
王二 83
王三 93
李四 60
王五 75
馬六 61
孫七 75
劉八 75

將文件cc.txt中的內容保存到Hash表中:

1 $hs=@{}
2 Get-Content d:\cc.txt | ForEach-Object {
3 $line = $_ -split " "
4  $hs[$line[0]]= $line[1]
5 }
6 $hs

結果以下:

經過 group-object 對成績分組:

1  $hs|%{$_.getenumerator()|group value|?{$_.count -gt 1}|%{$_.group}}

 

判斷Hash表中是否存在某個值:

$hs.contains()

 

格式化輸出:

1 #改變列標題爲Name,全部ProcessName輸出爲大寫格式,下面兩種寫法輸出結果相同:
2 get-process|select id,@{Label="Name";Expression={@($_.Processname.toupper())}}|ft -AutoSize
3 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表

相關文章
相關標籤/搜索