确定python中两个数据集相等的最佳方法?

时间:2016-09-30 00:22:10

标签: python python-3.x if-statement conditional-statements simplify

您是否知道一种更简单的方法来获得与此相同的结果? 我有这段代码:

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

2 个答案:

答案 0 :(得分:21)

您可以使用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

答案 1 :(得分:8)

不要错过更大的图片。这是解决问题的更好方法。

如果您要定义" mixes"该怎么办?字典,您可以将颜色混合为键,将结果颜色混合为值。

实现的一个想法是使用不可变的自然frozenset作为映射键:

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嵌套条件。