【问题标题】:return the value for a dictionary key (tuple), irregardless of order of the tuple elements返回字典键(元组)的值,与元组元素的顺序无关
【发布时间】:2018-08-02 20:33:52
【问题描述】:

我有一本字典,其中的键是元组:

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

这失败了

查尔斯

【问题讨论】:

    标签: python python-3.x dictionary tuples


    【解决方案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 是不可变且无序的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 2021-06-21
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2023-02-24
      相关资源
      最近更新 更多