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