检查两个变量是否具有来自两个不同集合的值,DRY方式

时间:2011-10-18 17:44:00

标签: python coding-style dry

我有一系列值(L,R,U,D)和两个变量dnewd,其中包含其中一个。我需要检查dnewd是否属于同一子集(L,RU,D)。 我知道我可以这样做:

d in {'L','R'} and newd in {'U','D'} or d in {'U','D'} and newd in {'L','R'}

如果FalseL,R中的值都为U,D,则确实会返回True。尽管如此,我觉得它还有很多。关于更多DRY方法的一些建议?

2 个答案:

答案 0 :(得分:4)

如果您知道只有两个集合并且您的值必须在一个或另一个中,那么您可以将其简化为:

(d in set1) == (newd in set2)

说明:

  • 如果d在集合1中且newd在集合2中,则==的两边都是True,因此表达式返回True
  • 如果d在集合2中且newd在集合1中,则==的两边都是False,因此表达式返回True
  • 如果它们位于同一组中,则==的一侧将返回False,另一侧将返回True,因此表达式的结果将为False。< / LI>

答案 1 :(得分:0)

怎么样:

In [8]: dmap = {'L':0, 'R':0, 'U':1, 'D':1}

In [9]: dmap[d] != dmap[newd]
Out[9]: False