テーブルの2つの列の間に1対1の関係があります。たとえばCi <--> Cj
です。Pythonでの高速検索のための1対1リレーションシップテーブルの格納方法
高速検索のためにこのようなテーブルを保存するにはどうすればよいですか?私は次のコードスニペットを使って自分自身をはっきりと表現します。
C1 = [1, 2, 3, 4]
C2 = ['a', 'b', 'c', 'd']
C3 = ['one', 'two', 'three', 'four']
# lookup, Ci --> Cj
idx = Ci.index(val)
corresponding_val = Cj[idx]
Dictが良い選択です。例として2列だけのテーブルを用意し、テーブルを辞書として保存します。具体的には、d[C1] = C2
とします。 からC2
にはO(1)
が必要です。しかし、C2
からC1
までは、時間がかかります。
どのように2つのディクテーションを1つずつ持つのはどうですか?または、それぞれの関係が二度、一度一度二回あるdict? – ddsnowboard
@ddsnowboard、それは2つの列のために働く。しかし、* n *列の場合、* n *(n-1)* dictsが必要です。 – SparkAndShine