2016-09-30 34 views
10

你知道一个更简单的方法来达到同样的效果吗? 我有这样的代码:确定python中两个数据集相等的最佳方法?

color1 = input("Color 1: ") 
color2 = input("Color 2: ") 

if ((color1=="blue" and color2=="yellow") or (color1=="yellow" and color2=="blue")): 
      print("{0} + {1} = Green".format(color1, color2)) 

我也试图与此:

if (color1 + color2 =="blueyellow" or color1 + color2 =="yellowblue") 
+10

虽然[代码审查](http://codereview.stackexchange.com/tour)可能是提出这类问题的好地方,我们应该摆脱在那里发问问者的习惯。请阅读[this](http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users)meta post澄清。 – idjaw

+5

请停止提交代码审查。阅读我在我评论中发布的链接,了解为什么我们需要停止这样做。 – idjaw

+3

set([color1,color2])== set([“yellow”,“blue”]) – zaquest

回答

20

您可以使用set进行比较。

两组相等,当且仅当每一组的每一个元素包含在其他

In [35]: color1 = "blue" 

In [36]: color2 = "yellow" 

In [37]: {color1, color2} == {"blue", "yellow"} 
Out[37]: True 

In [38]: {color2, color1} == {"blue", "yellow"} 
Out[38]: True 
8

不要错过大局观。一般来说,这是解决问题的更好方法。

如果您要定义“混合”字典,您将混合颜色作为关键字并将结果颜色作为值进行混合。实施

一个想法是通过自然使用一成不变的frozenset S作为映射键:

mixes = { 
    frozenset(['blue', 'yellow']): 'green' 
} 

color1 = input("Color 1: ") 
color2 = input("Color 2: ") 

mix = frozenset([color1, color2]) 
if mix in mixes: 
    print("{0} + {1} = {2}".format(color1, color2, mixes[mix])) 

这样你可以很容易规模解决了,添加不同组合,而不必多次的if/else嵌套条件。

相关问题