在一个约束中将域的两个值分配给变量

问题描述 投票:0回答:2

我一直在遇到有关python中cps的问题。我们有一个约束条件,要求我们在3名教师之间分配2个科目(域中有6个科目),而不必在他们之间重复科目。我们遇到的问题是,我们不知道如何将域的2个值仅分配给一个变量。

problem.addVariables(['Billy', 'Jannet', 'Julia'], ['CN','CS','L','I','EF','M'])

所以我不知道该怎么做,例如如何将主题CN和CS分配给Billy。我试着做一个比较值的函数,如果不同则返回true,但它只会打印出这样的内容比利:男,珍妮特:我,朱莉娅:CN

几乎没有任何帮助。

python constraints
2个回答
0
投票

您的答案就在眼前:一个清单。例如,

Billy  = ['M', 'CS']
Jannet = ['I', 'L']
Julia  = ['CN', 'EF']

由于您的名字以字符串而不是变量的形式出现,所以我希望您改用字典:

{ 'Billy' : ['M', 'CS'],
  ...
}

0
投票
def addVariables(teachers, subjects):
  # convert ['CN','CS','L','I','EF','M'] to [('CN', 'CS'), ('L', 'I'), ('EF', 'M')]
  subjectPairs = zip(subjects[0::2], subjects[1::2])
  return dict(zip(teachers, subjectPairs))

print(addVariables(['Billy', 'Jannet', 'Julia'], ['CN','CS','L','I','EF','M']))
# prints {'Billy': ('CN', 'CS'), 'Jannet': ('L', 'I'), 'Julia': ('EF', 'M')}
© www.soinside.com 2019 - 2024. All rights reserved.