isatoの活動日記

管理人isatoが毎日の生活で気になったこと、勉強になったことを書いています。

python 辞書型とタプル型を用いた2次元データ

タイトルを見られた方は、なんでそんなややこしいことするの?って思われたかもしれません。確かに用途によっては、他の作り方でも十分です。

 

タイトルのようにするメリットは、領域が確保されていないときでも要素を指定できることです。

 

詳しく説明します。

C言語とかだと最初に int list[10][10] のように領域を確保してから、list[2][5] = 7 のように要素にアクセスします。

 

しかしpythonは領域を動的に確保するので、このようには書けません。(numpyとかではできます)

 

では領域を動的に確保しながら要素を指定したいときはどうすればいいでしょう。

 

一つの答えとして以下のようにすれば良いです。(2, 5)という要素に7を格納したい場合は

 

data = {}

data[(2,5)] = 7

 

のようにします。

 

タプル(2,5)が整数7と紐づけられるため、2次元データとして扱うことが可能です。

 

numpy使えばよくね?って思われた方もいらっしゃると思います。

 

numpyは基本的には数値を格納して計算に使うものです。それに比べて、このやり方では要素は数値以外でも問題ありません。リストを格納してもいいし、辞書を格納してもいいわけです。また動的確保なので、無駄な領域を確保する必要がないという利点もあります。

 

そう言った意味では結構汎用性は高いと思っています。

 

もっといい方法があれば、ぜひ教えてください!