我正在维护一个字典,用于跟踪对象对之间的相似性。
例如,这本字典可能如下所示:
similarities = {
p1: {p2: v12, p3:v13, p4:v14},
p2: {p1: v21, p3:v23, p4:v24},
p3: {p1: v31, p2:v32, p4:v34},
p4: {p1: v41, p2:v42, p4:v43}
}
请注意,相似度测量是对称的。因此,与iesimilarities[p1][p2]
相同。similarities[p2][p1]
v12 == v21
有时,我需要p2
消除similarities[p1]
; 在这样做的过程中,我还需要从所有内部字典中删除p1
和。
这是乏味和低效的。p2
similarities
所以不是维护一个对称字典,有没有办法用一个复合键来维护一个字典,以便我可以查找similarities[p1,p2]
?
我真的不能使用,tuple
因为(p1, p2) != (p2, p1)
我不能先验地知道如何订购元组。
Afrozenset
是我能想到的唯一其他容器,但这不会削减它,因为其中可能还有其他键similarities
包含其中一个p1
或p2
作为一个组件。那么我可以使用什么容器来解决这个问题呢?
技术信息:
- 蟒蛇2.7
- 这个“复合键”中总会有两个元素
谢谢