Set
は、Block
またはモデルオブジェクトに割り当てられていないため、完全に構築されていません。あなたは(あなたが実際にあなたのモデルにdict
Set
のSで終わるません)を求めているわけではない正確に何が、あなたが望む効果を得るために最も簡単な方法は、実際にを作成することですSet
をインデックス化:
dictOfList= {}
dictOfList[1] = [10,11,12]
dictOfList[2] = [20,21]
dictOfList[3] = [31,32,33,34]
model.S = Set(dictOfList.keys(), initialize=dictOfList)
あなたがモデル(model.pprint()
)を印刷する場合は、あなたが得る:
2 Set Declarations
S : Dim=1, Dimen=1, Size=9, Domain=None, ArraySize=3, Ordered=False, Bounds=None
Key : Members
1 : [10, 11, 12]
2 : [20, 21]
3 : [31, 32, 33, 34]
S_index : Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Bounds=(1, 3)
[1, 2, 3]
を実際にあなたもそれを取得するようにモデルに個々のSet
を割り当てる必要がありますSet
秒のPythonのdict
を作成するにはpr動作可能に構築される。このような何かは仕事ができる:あなたが明示的にインデックスさSet
のインデックスを作成する場合は、より複雑なインデックスを持つことができます。
model.dictOfSets = {}
for el in dictOfList:
model.dictOfSets[el] = Set(initialize=dictOfList[el])
setattr(model, 'dictOfSets_member_%s' % (el,), model.dictOfSets[el])
for el in dictOfList:
model.dictOfSets[el].display()
dictOfSets_member_1 : Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Bounds=(10, 12)
[10, 11, 12]
dictOfSets_member_2 : Dim=0, Dimen=1, Size=2, Domain=None, Ordered=False, Bounds=(20, 21)
[20, 21]
dictOfSets_member_3 : Dim=0, Dimen=1, Size=4, Domain=None, Ordered=False, Bounds=(31, 34)
[31, 32, 33, 34]
EDITを与えます。つまり、
model.S_IDX = Set(initialize=dictOfList.keys())
model.S = Set(model.S_IDX, initialize=dictOfList)
明示的に作成することで、任意の複雑なキーを作成できます。いくつかのケースでは、明示的dimen=
キーワードを使用して、インデックスセットの「大きさ」を設定する必要があることに注意してください:あなたはタプルは異なる長さを持つようにしたい場合は
dictOfList = { (1,2): [10,11,12],
(2,3): [20,21],
(1,3): [31,32,33,34],
}
model.S_IDX = Set(initialize=dictOfList.keys(), dimen=2)
model.S = Set(model.S_IDX, initialize=dictOfList)
これは特にそうである:
dictOfList = { (1,): [10,11,12],
(2,3): [20,21],
(1,3,4): [31,32,33,34],
}
model.S_IDX = Set(initialize=dictOfList.keys(), dimen=None)
model.S = Set(model.S_IDX, initialize=dictOfList)
model.pprint()
が与える:
2 Set Declarations
S : Dim=None, Dimen=1, Size=9, Domain=None, ArraySize=3, Ordered=False, Bounds=None
Key : Members
(1,) : [10, 11, 12]
(1, 3, 4) : [31, 32, 33, 34]
(2, 3) : [20, 21]
S_IDX : Dim=0, Dimen=None, Size=3, Domain=None, Ordered=False, Bounds=None
[(1,), (1, 3, 4), (2, 3)]
をあなたは 'model.S =セット(dictOfList.keys()、= dictOfListを初期化するには)'働いていたラインを使用して、言ったように。私はまたセットをモデルにリンクして、それが私の次の質問になる方法が好きです。ご協力いただきありがとうございます! –
わかりました。私はもっと難しいです。辞書キーがタプルの場合はどうでしょうか? –
すべてが同じ長さの場合は、明示的にS_indexセットを作成します。私は合理的な書式を得るために答えを更新します。 – jsiirola