我有一個固定的字符串列表。我需要檢查這些字符串是否是字典中的一個鍵(只需要True或False)。我可以去檢查是否有任何密鑰列表出現在字典中
if 'asdf' in dict or 'qwer' in dict or 'zxcv' in dict ... : ... do important secret stuff ...
但它似乎並不理想。有沒有更習慣於這樣做的方式?
我有一個固定的字符串列表。我需要檢查這些字符串是否是字典中的一個鍵(只需要True或False)。我可以去檢查是否有任何密鑰列表出現在字典中
if 'asdf' in dict or 'qwer' in dict or 'zxcv' in dict ... : ... do important secret stuff ...
但它似乎並不理想。有沒有更習慣於這樣做的方式?
你可以使用any
並要檢查每個鍵遍歷
if any(key in dict for key in ['asdf', 'qwer', 'zxcf']):
# contains at least one of them
這將短路和在發現第一個匹配返回True
,還是會迴歸False
如果仍然沒有找到。
啊!正是我在找什麼。 –
您還可以使用&
:
keys = ['asdf', 'qwer', 'zxcf']
if d.keys() & keys:
print(d)
您需要d.viewkeys()
爲python2。
或者,使密鑰的set
,看看集是不相交與否,這將是最快的方法:
keys = {'asdf', 'qwer', 'zxcf'}
if not keys.isdisjoint(d):
print(d)
,你可以嘗試使用Python列表理解:
if any([True for entry in your_list if entry in dict]):
--dostuff--
編輯:CoryKramer建議刪除'[]'爲了使這個發電機,而不是評估整個列表之前檢查是否有任何元素是「真」:
if any(True for entry in your_list if entry in dict):
--dostuff--
哦,不錯的加法。感謝CoryKramer! – lstbl
閱讀文檔「任何」.. –
你究竟在做什麼? –
檢查POST請求輸入 –