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

etu*_*rdu 6 python coding-style dry

我有一系列的values(L,R,U,D)和两个变量,d并且newd包含其中一个变量.我需要检查是否dnewd相同的子集(L,RU,D).
我知道我可以这样做:

d in {'L','R'} and newd in {'U','D'} or d in {'U','D'} and newd in {'L','R'}
Run Code Online (Sandbox Code Playgroud)

这确实是返回False,如果它们都具有值L,RU,DTrue其他.尽管如此,我觉得它还有很多.关于更干燥方法的一些建议?

Mar*_*ers 4

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

(d in set1) == (newd in set2)
Run Code Online (Sandbox Code Playgroud)

解释:

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