回答
可以使用all()
有generator expression:
>>> all(x in dct for x in ('foo', 'bar', 'qux'))
False
>>> all(x in dct for x in ('foo', 'bar', 'baz'))
True
>>>
它爲您節省了高達2個字符(但將有更多救你,如果你有一個較長的列表,以檢查)。
{"foo","bar","baz"}.issubset(dct.keys())
對於Python < 2.7,你就必須更換一套文字與set(["foo","bar","baz"])
如果你喜歡運營商和不介意創造另一組的性能,可以在使用<=
操作該集和字典的鍵集。
兩個變化結合會是什麼樣子:
set(["foo","bar","baz"]) <= set(dct)
最後,如果你使用Python 3,dict.keys()
會返回一個setlike對象,這意味着你可以撥打運營商沒有性能損失是這樣的:
{"foo","bar","baz"} <= dct.keys()
這是一個很好的選擇,並演示恕我直言,TIMTOWTDI是不可避免的;不幸的是,<= 2.6中的'set'不需要'* args' - 你需要明確地傳遞一個序列(另一組括號)。 –
對於其他人,這將是O(n)而不是O(1)。如果字典非常大,你甚至不必成爲荷蘭人,看看這會有多糟糕。 – geoffspear
感謝設置構造函數調用和提及操作符的錯誤。我不認爲O(n)的傷害在OP的情況下,雖然,因爲他是從手動檢查有關Python 3.每個按鍵:) –
- 1. 提取前的詞典鍵[Pythonic方法]
- 2. 詞典中的鍵
- 3. 參考在迅速詞典
- 4. 在詞典中實現結果的最佳pythonic方法
- 5. 詞典:鍵是否存在
- 6. 另一本詞典中的詞典+一個鍵的多個值
- 7. Javascript中的Pythonic字典
- 8. 詞典在Python恆定按鍵字典
- 9. 關鍵詞字典
- 10. 詞典可選?在迅速的混亂
- 11. 用詞典中的後代元素過濾Pythonic方式
- 12. Python:詞典中的詞典?
- 13. 在字典中的詞典中添加鍵值對:
- 14. 在Python詞典中匹配鍵
- 15. 帶兩個鍵的詞典?
- 16. C#詞典中的下一個鍵
- 17. VBA單元作爲詞典中的鍵
- 18. .NET中詞典的複合鍵
- 19. 編輯plist詞典中的鍵?
- 20. 在Python中更新詞典詞典
- 21. 不能在詞典中使用詞典
- 22. Pythonic字典遍歷
- 23. 聲明式SQLAlchemy中的標記詞典?
- 24. 快速搜索字典中的鍵
- 25. vb.net清除多鍵詞典
- 26. 訪問詞典與鍵值
- 27. 使用鍵創建詞典
- 28. 詞典(鍵,值)順序
- 29. 將字典鍵傳遞給新詞典
- 30. 找不到詞典關鍵詞
接受這個答案感謝包含有用的鏈接。 :) – davidchambers
...雖然它重複了@unutbu早期的答案。 –
@飛羊:我開始打字時沒有答案。我想unutbu開始和完成打字,而我創造了積極和消極的例子,並添加了一些鏈接的參考。 [即我沒有複製他的家庭作業;-)] – Johnsyweb