Лучший способ определить равенство двух наборов данных в 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")

Ответ 1

Для сравнения вы можете использовать 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

Ответ 2

Не пропустите большую картинку. Вот лучший способ приблизиться к проблеме в целом.

Что делать, если вы определяете словарь "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.