2016-09-30 57 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嵌套條件。

相關問題