PowerShell: 多次元連想配列(ハッシュテーブル)を作成してみる

PowerShellでは多次元の連想配列 (ハッシュテーブル)を作成することも可能です。 配列で多次元配列(ジャグ配列)を使うのと同じような要領でできます。

ここでは2次元の連想配列を例に、 多次元連想配列の作成、データの追加、データの削除の方法を解説します

多次元連想配列の作成

下表のようなキーと値を持つ「2次元連想配列 $h」を作ってみます。
「2次元連想配列 $h」は2つのキー"a"と"b"があり、それぞれ値として連想配列を持ちます。

キー値(連想配列)
aa1 = 100
a2 = 200
bb1 = 300
b2 = 400

次のコードのように記述します。

$h = @{
	a = @{
		a1 = 100
		a2 = 200
	}
	b = @{
		b1 = 300
		b2 = 400
	}
}

$h.GetType().Name    # Hashtable
$h.a.Gettype().Name  # Hashtable
$h.b.Gettype().Name  # Hashtable

$h

# 実行結果
Name        Value
----        -----
b          {b1, b2}
a          {a2, a1}

GetType().Nameで $h、$h.a、$h.b  がハッシュテーブルであることも確認できます。

値の参照

上で作成した多次元連想配列のキー"a1"の値を参照したい場合、 次のようにキーを. ドットでつないで参照します。

Write-Host $h.a.a1  # 100

他にも[キー]をつなげたり、Item(キー)を.ドットでつなく書き方も可能です。

Write-Host $h["a"]["a1"]            # 100

Write-Host $h.Item("a").Item("a1")  # 100

自分がわかりやすい方法を使ってください。

値の変更

値を変更する時は代入演算子の左辺に変更したい要素、 右辺に値を記述します。

$h.a.a1 = 500

要素(キー・値)の追加

要素を追加する場合はAddメソッドを使います。

「a1 = 100」「a2 = 200」と同じ次元に「a3 = 500」を追加する場合は 次のように記述します。

$h.a.Add("a3", 500)

$h.a

# 実行結果
Name         Value
----         -----
a3           500
a2           200
a1           100

キー"a"、"b"と同じ次元にキー"c"を追加してみます。 キー"c"の値は連想配列とします。

$h.Add("c", @{c1 = 500; c2 = 600})

$h

# 実行結果
Name         Value
----         -----
b            {b1, b2}
a            {a2, a1}
c            {c2, c1}

要素(キー・値)の削除

要素を削除する場合はRemoveメソッドを使います。

「b1 = 300」を削除する場合、 次のように記述します。

$h.b.Remove("b1")

$h.b

# 実行結果
Name         Value
----         -----
b2           400
PowerShell