无论元组元素的顺序如何,都返回字典键(元组)的值

时间:2018-02-22 20:40:45

标签: python python-3.x dictionary tuples

我有一个字典,键是元组:

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])])

这次失败

查尔斯

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是不可变的和无序的。