有没有一种优雅的方式来定义关系?

时间:2020-08-08 22:38:50

标签: python data-structures

我正在研究“秘密圣诞老人”类型的问题。前提是我有一群人参加,其中一些人可能是合伙人。我要强制执行的一个限制条件是,出于这种礼物交换的目的,不应将某人分配给其伴侣。我正在使用Python工作,并且想知道是否有比使用字典定义每个人的合作伙伴更优雅的解决方案。用这种方式定义有点笨拙且容易出错。

当前看起来像:

partners = {
    'Roland': 'Jocelyn', 
    'Johnny': 'Moira',
    'Alexis': 'Ted', 
    'David': 'Patrick', 
    'Jocelyn': 'Roland', 
    'Moira': 'Johnny', 
    'Ted': 'Alexis', 
    'Patrick': 'David'
}

参与者列表只是一个简单的字符串列表。并非每个参与者都是合伙企业。

1 个答案:

答案 0 :(得分:2)

从一组到另一组的关系只是一组有序对。在这种情况下,您具有对称关系,其中且仅当ab相关时,ba相关。这意味着您可以用一对“无序”对(即一组)来表示两个人之间的关系。

partners = [
    {'Roland', 'Jocelyn'},
    {'Johnny', 'Moira',},
    {'Alexis', 'Ted'},
    {'David', 'Patrick'}
]