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

can we define a variable with multi indices in python?

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

这是我在 AMPL 中的内容 我想知道我是否可以在 python 中使用相同的索引?

我有一些家庭和成员的信息。对于每个家庭中的每个人,我都有一些效用,我想找到最大的效用。

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

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

所以U有2个索引U[f,i],F表示家庭,i表示人。

例如在第 4 个家庭中,第二个人有这些实用程序:

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

而在第三户中,第一个人有这些效用

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

让我们显示 MU 的最大效用,因此作为输出我们有

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

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

您可以在 python 中使用 dictionary 来完成此操作。效用值可以表示为 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