Python 将域的两个值指定给一个约束中的变量
我在python中遇到了一个关于cps的问题。我们有一个约束要求我们在3名教师之间分配2个科目(我们在该领域有6个科目),而不在他们之间重复科目。我们的问题是,我们不知道如何将域的两个值只分配给一个变量Python 将域的两个值指定给一个约束中的变量,python,constraints,Python,Constraints,我在python中遇到了一个关于cps的问题。我们有一个约束要求我们在3名教师之间分配2个科目(我们在该领域有6个科目),而不在他们之间重复科目。我们的问题是,我们不知道如何将域的两个值只分配给一个变量 problem.addVariables(['Billy', 'Jannet', 'Julia'], ['CN','CS','L','I','EF','M']) 所以我不知道怎么做,比如如何分配给Billy,科目CN和CS。我试着制作一个函数来比较值,如果值不同,则返回true,但它只打印类似
problem.addVariables(['Billy', 'Jannet', 'Julia'], ['CN','CS','L','I','EF','M'])
所以我不知道怎么做,比如如何分配给Billy,科目CN和CS。我试着制作一个函数来比较值,如果值不同,则返回true,但它只打印类似这样的内容
比利:M,詹妮特:我,朱莉娅:中国
任何小小的帮助都将不胜感激。答案就在你面前:一份清单。比如说,
Billy = ['M', 'CS']
Jannet = ['I', 'L']
Julia = ['CN', 'EF']
由于您的名字是以字符串形式输入的,而不是以变量形式输入的,因此我希望您需要一个dict:
{ 'Billy' : ['M', 'CS'],
...
}
你试过使用字典/元组吗?
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')}