返回字典键(元组)的值,与元组元素的顺序无关

2024-10-06 14:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,里面的键是元组:

submatrix = {('W', 'F'): 1, ('L', 'R'): -2, ('S', 'P'): -1,...}

To字典包含半个对称矩阵,以下是等价的

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

但这次失败了

查尔斯


Tags: ortoin元素forlenif字典
1条回答
网友
1楼 · 发布于 2024-10-06 14:31:27

将密钥转换为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

这是因为冻结集是不可变和无序的。你知道吗

相关问题 更多 >