如何使用列表值作为 Z3py 中的字典索引
How to use list value as the dictionary indices in Z3py
我有一个 python 数组 (Arr),其中包含 j 个整数元素,一个值为 z3 Int 变量的 Z3 列表 (X) 和一个值为 Z3 Bool 变量的 Z3 字典 (D)。
例如:
X = [ [ x_0_0, x_0_1, …, x_0_j],
[ x_1_0, x_1_1, …, x_1_j],
…
[ x_i_0, x_i_1, …, x_i_j] ]
X[0] = Arr /* Arr is python integer array */
D = { (x, i, j): D_x_i_j } for all i and j, and where x is the value present at X[i][j] location.
X[i1][j]的剩余值由求解器根据D值决定,即True/False,其中1<= i1<=i.
现在这些解决的 X 值是 D 字典的键值。
因此,我想使用这些值作为字典的键索引。
我的问题是如何使用 Z3 列表值作为 Z3 字典的键值或作为另一个 z3 列表的索引?
您可以将列表变成 tuple
。 Tuples
是可散列的,因此是有效的字典键。
d = {(x, i, j): D_x_i_j}
X[0] = Arr # [x, i, j]
key = tuple(X[0])
print(d[key]) # yields D_x_i_j
我有一个 python 数组 (Arr),其中包含 j 个整数元素,一个值为 z3 Int 变量的 Z3 列表 (X) 和一个值为 Z3 Bool 变量的 Z3 字典 (D)。
例如:
X = [ [ x_0_0, x_0_1, …, x_0_j], [ x_1_0, x_1_1, …, x_1_j], … [ x_i_0, x_i_1, …, x_i_j] ] X[0] = Arr /* Arr is python integer array */ D = { (x, i, j): D_x_i_j } for all i and j, and where x is the value present at X[i][j] location.
X[i1][j]的剩余值由求解器根据D值决定,即True/False,其中1<= i1<=i.
现在这些解决的 X 值是 D 字典的键值。
因此,我想使用这些值作为字典的键索引。
我的问题是如何使用 Z3 列表值作为 Z3 字典的键值或作为另一个 z3 列表的索引?
您可以将列表变成 tuple
。 Tuples
是可散列的,因此是有效的字典键。
d = {(x, i, j): D_x_i_j}
X[0] = Arr # [x, i, j]
key = tuple(X[0])
print(d[key]) # yields D_x_i_j