Skip to content
10月 17 / rakkyoo

pythonで2次元辞書を使う(2次元ディクショナリ)

Pythonでプログラムを作っているときは,Pythonの辞書-ディクショナリ-(Perlの連想配列,rubyのハッシュ)を頻繁に使うのですが,2次元で使いたいときの方法をいつも忘れてしまうので,備忘録です.

2次元辞書のイメージとして,

1
dict_test["x1"]["y1"] = "x1y1"

みたいに作っていきたいのですが,これだとエラーになります.

以下のように初期化してみても

1
2
dict_test = {}
dict_test["x1"]["y1"] = "x1y1"

エラーになります.

次に,一つめのキーを指定して初期化してから,二つめのキーを指定する

1
2
3
dict_test = {}
dict_test["x1"] = {}
dict_test["x1"]["y1"] = "x1y1"

とするとエラーは出ません.

for文などでまわすときは,一つめのキーが存在しないときに初期化をしてあげればいいので,

dic_test
x1 x2 x3 x4
y1 : “x1y1” “x2y1” “x3y1” “x4y1”
y2 : “x1y2” “x2y2” “x3y2” “x4y2”
y3 : “x1y3” “x2y3” “x3y3” “x4y3”
y4 : “x1y4” “x2y4” “x3y4” “x4y4”

といった2次元辞書を作りたければ,以下のようになります.

1
2
3
4
5
6
7
8
9
10
11
# encoding: utf-8
 
dict_test = {}
for x in ["x1", "x2", "x3", "x4"]:
    for y in ["y1", "y2", "y3", "y4"]:
        if x in dict_test:
            dict_test[x][y] = x + y
        else:
            dict_test[x] = {}
 
print dict_test["x1"]["y2"] #=> x1y2

こんな感じになるかと.

6,7行目で,一つめのキーが存在しているかどうかをチェックして,存在していなければ初期化しています.

Python自体があまりよくわかっていないので,試行錯誤ですが,ひとまず快適に.

[`twib` not found]

Leave a comment

CAPTCHA


This blog is kept spam free by WP-SpamFree.