我们可以在python中定义具有多个索引的变量吗?

时间:2019-07-24 14:54:40

标签: python ampl

我被迫在部分代码中使用python。我在模型中编码了ampl,但是现在我需要使用python查找数组的最大值。

这是我在AMPL中拥有的,我想知道我在python中是否可以具有相同的索引?

我从家庭和成员那里得到了一些信息。对于每个家庭中的每个人,我都有一些用途,我想找到最大的用途。

对于实用程序,我在集合E上具有参数U

             set E ,within F cross N;
              param U{E};

因此,U有2个索引U [f,i],F显示家庭,而我确定了这个人。

例如在第4个家庭中,第二人称具有以下实用程序:

  U[4,2]=5
  U[4,2]=6
  U[4,2]=7

在第3户家庭中,第一人称具有这些功能

  U[3,1]=8
  U[3,1]=9
  U[3,1]=1

let显示MU的max实用程序,因此作为输出

  MU[4,2]=7
  MU[3,1]=9

有什么办法可以在python中找到这个MU吗?

1 个答案:

答案 0 :(得分:1)

您可以使用python中的list来完成此操作。实用价值可以表示为属于一个特定家庭和一个人的实用价值的keys。家人和一个人可以在字典中表示为from collections import defaultdict df = defaultdict(list) df[4, 2] = [5, 6, 7] df[3, 1] = [8, 9, 1] for key in df.keys(): maximum = 0 for value in df[key]: if value > maximum: maximum = value max_keys = key print("(Family, Person) = ", key, "Max of Utility = ", maximum)

(Family, Person) =  (4, 2) Max of Utility =  7
(Family, Person) =  (3, 1) Max of Utility =  9

代码的输出将为

{{1}}