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

use*_*985 10 python if-statement simplify conditional-statements python-3.x

你知道一种更简单的方法来获得与此相同的结果吗?我有这个代码:

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))
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

if (color1 + color2 =="blueyellow" or color1 + color2 =="yellowblue")
Run Code Online (Sandbox Code Playgroud)

Kas*_*mvd 21

您可以使用sets进行比较.

当且仅当每组中的每个元素都包含在另一组中时,两组相等

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
Run Code Online (Sandbox Code Playgroud)


ale*_*cxe 8

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

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

实现的一个想法是使用不可变的自然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]))
Run Code Online (Sandbox Code Playgroud)

这样,您可以轻松扩展解决方案,添加不同的混合,而无需多个if/else嵌套条件.