2009-05-29 173 views
3

好吧,我正在嘗試採取更加pythonic的做法。檢查以查看列表是否存在於另一個列表中?

我怎樣才能做到以下幾點:

required_values = ['A','B','C'] 
some_map = {'A' : 1, 'B' : 2, 'C' : 3, 'D' : 4} 

for required_value in required_values: 
    if not required_value in some_map: 
     print 'It Doesnt Exists' 
     return False 
return True 

我看着內建函數all,但我真的不能看到如何適用於上述場景。

任何建議使這更pythonic?

回答

9
all(value in some_map for value in required_values) 
+0

美麗的謝謝 – UberJumper 2009-05-29 16:48:15

+0

不客氣。 – SilentGhost 2009-05-29 16:54:54

3
return set(required_values).issubset(set(some_map.keys())) 
0

嘗試列表理解:

回報不是bool的([在required_values X爲X,如果x不在some_map.keys()])(爲了清楚起見布爾轉換)

或者如果x不在some_map.keys()中,則返回[x for required_values](我認爲pythonic方式更多)

inside []語句生成所有必需值的列表,但不包含在您的映射鍵中 如果列表爲空,則評估爲False,否則爲True。

所以如果地圖沒有全部需要的值,至少有一個元素將在列表理解表達式構建的列表中。 這將評估爲真,所以我們否定結果以滿足您的代碼要求(這些都是必需的值應存在於地圖中)

相關問題