2009-10-20 7 views

答えて

8

$table = new-object System.Collections.Hashtable 
for ($i = 0; $i -lt $list.Length; $i += 2) { 
    $table.Add($list[$i],$list[$i+1]); 
} 
+4

私はもう少し簡潔なものを望んでいたと思います –

2

方法について試してみてください。

$ht = @{} 
$key = ""; 
("Key",5,"Key2",6) | foreach ` 
{ 
    if($key) 
    { 
     $ht.$key = $_; 
     $key=""; 
    } else 
    {$key=$_} 
} 
+1

私はそれが好きですが、あなたはそれを単純化することができます: $ ht = @ {}; $ key = 0 "Key"、5、 "Key2"、6 | foreach {if($ key){$ ht。$ key = $ _; $ key = 0} else {$ key = $ _}} –

+0

"Key"の直前に、コメントフォーマッタが私の改行を見ました。 –

+0

ありがとうございます。私は入力が少ないと思う。 – zdan

2
$h = @{} 
0..($l.count - 1) | ? {$_ -band 1} | % {$h.Add($l[$_-1],$l[$_])} 

$h = @{} 
0..($l.count - 1) | ? {$_ -band 1} | % {$h.($l[$_-1]) = $l[$_]} 

$h = @{} 
$i = 0 
while ($i -lt $l.count) {$h.Add($l[$i++],$l[$i++])} 
11
Function ConvertTo-Hashtable($list) { 
    $h = @{} 

    while($list) { 
     $head, $next, $list = $list 
     $h.$head = $next 
    } 

    $h 
} 

ConvertTo-Hashtable ("Key",1,"Key2",2) 
+1

Bruce Payetteの投稿もご覧ください:[PowerShellのヒント:配列をシフトする方法...](http://blogs.msdn.com/b/powershell/archive/2007/02/06/powershell-tip-how -to-shift-arrays.aspx) –

+3

はい。さらに、これは機能的な世界の標準パターンです。 は、それは、($次$ヘッド、$一覧= $リスト) 一方{$ H。$ヘッド= $次 } –

+0

ラブこの溶液に短縮することができます。 – craig

1

あなたKeyValuePairsの場合は、明示されている 'Microsoft.Azure.Management.WebSites.Models.NameValuePair'次に使用できます:

Function ConvertListOfNVPTo-Hashtable($list) { 
    $h = @{} 
    $list | ForEach-Object { 
     $ht[$_.Name] = $_.Value 
    } 
    return $h 
} 
関連する問題