我有一个字典,键是元组:
submatrix = {('W', 'F'): 1, ('L', 'R'): -2, ('S', 'P'): -1,...}
字典包含对称矩阵的一半,以下是等效的
('W', 'F'): 1
('F', 'W'): 1
我想返回给定元组的值,无论顺序如何。 如果元组元素的顺序不匹配,则会失败:
for i in range(1,len(y)+1):
for j in range (1,len(x)+1):
if(submatrix[(x[j-1], y[i-1])]):
我也尝试过:
if(submatrix[(x[j-1], y[i-1])] or submatrix[(y[j-1], x[i-1])])
这次失败
查尔斯
答案 0 :(得分:1)
将您的密钥转换为frozensets:
submatrix = {('W', 'F'): 1, ('L', 'R'): -2, ('S', 'P'): -1}
d = {frozenset(k): v for k, v in submatrix.items()}
d[frozenset({'W', 'F'})] # 1
d[frozenset({'F', 'W'})] # 1
这是有效的,因为frozensets是不可变的和无序的。