1. ホーム
  2. python

[解決済み】Pythonでルックアップテーブルを使う

2022-02-21 06:11:23

質問

pythonを使って、圧電式液滴生成装置を自動化しています。パルス長の各値に対して、適切な値の電圧が存在し、液滴を与える信号を生成します。この電圧の値は、実行するたびに変化し続けます(例えば、+や-10など)。そのため、私はパルス長ごとに異なる電圧値のデータベースを持っています。

Pythonでルックアップテーブルを使用することについて、いくつか知りたいことがあります。私のタスクでは、15から70までのランダムなパルス長を選び、この値をデータベースから特定の電圧範囲に関連付けたいと思います(例えば、値17に対して、ルックアップテーブルにアクセスし、35から50までの電圧範囲を返すプログラムが欲しいです)。1つの値だけでなく、全範囲を取得することは可能でしょうか?私はコーディングとPythonの初心者なので、よくわかりません。どんなヘルプでも歓迎です。ありがとうございます。

どのように解決するのですか?

どの範囲にどのような値を関連付けるかについての詳しい情報は与えられていませんので、私の答えをあなた自身の問題に移し替えることを想定しています。

ルックアップテーブルは dictionary を使用します。それらは中括弧で表示されます。

簡単な例です。

myDict = {1: [1, 2, 3, 4, 5],
          2: [2, 3, 4, 5, 6],
          3: [3, 4, 5, 6, 7]}

ここでは、3つの項目を持つ辞書を作成します。1, 2, 3. これらの各項目には、範囲が関連付けられています。この例では、ロジックは range(i, i+5) .

リストのように、quot;Look-Up-Table"に問い合わせるのです。

print(myDict[2])
>>> [2, 3, 4, 5, 6]

(どのように [2] はインデックス#2ではなく、実際には値 2 を選択します)。

辞書を手作業で作成するのではなく、自動的に構築したい場合がよくある。例えば、同じ長さの2つのリストを1つの辞書に結合するには、次のようにします。 dictzip :

indices = range(15, 76) # your values from 15 to 75
i_ranges = [range(i, i+5) for i in indices] # this constructs your ranges
myDict = dict(zip(indices, i_ranges)) # zip together the lists and make a dict from it
print(myDict[20])
>>> [20, 21, 22, 23, 24]

ちなみに、整数とリストに限定されるわけではありません。こんな感じでもOKです。

myFruits = {'apples': 20, 'cherries': 50, 'bananas': 23}
print(myFruits['cherries'])
>>> 50