名前が変数に由来する辞書を作成しようとしています。
より良い方法があるかもしれないので、これが状況です。私は API を使用して「オブジェクト」の属性を取得しています。(名前、説明、X、Y、Z)など。この情報を「オブジェクト」ごとにデータを保持する方法で保存したい。
この情報を取得するために、API はすべての「オブジェクト」を反復処理します。
だから私の提案は、オブジェクト名が「キャプチャ」したいものの1つである場合、次のようにその名前で辞書を作成したいということでした:
ObjectName = {'Description': VarDescrption, 'X': VarX.. etc}
(私が言うところで"Varetc..."
は、API によって渡されたその属性の値になります。
事前に名前のリストを知っているので、非常に長いIfツリーを使用できますが、これを実現するためのより簡単にコーディングできるものを探しています。(コードを追加しすぎずに拡張可能)
ここに私が持っているコードがあります:
def py_cell_object():
#object counter - unrelated to question
addtototal()
#is this an object I want?
if aw.aw_string (239)[:5] == "TDT3_":
#If yes, make a dictionary with the object description as the name of the dictionary.
vars()[aw.aw_string (239)]={'X': aw.aw_int (232), 'Y': aw.aw_int (233), 'Z': aw.aw_int (234), 'No': aw.aw_int (231)}
#print back result to test
for key in aw.aw_string (239):
print 'key=%s, value=%s' % (key, aw.aw_string (239)[key])
「aw」とは何かを示すコードの最初の 2 行を次に示します。
from ctypes import *
aw = CDLL("aw")
API 呼び出しの数字を説明するには:
231 AW_OBJECT_NUMBER、
232 AW_OBJECT_X、
233 AW_OBJECT_Y、
234 AW_OBJECT_Z、
239 AW_OBJECT_DESCRIPTION、
231 ~ 234 は整数、239 は文字列です。