我想檢查是否所有的值,即對應於字典中的所有鍵的值是0.有沒有辦法做到沒有循環?如果是這樣如何?如何在Python中檢查字典的所有值是否爲0?
21
A
回答
45
使用all()
:
all(value == 0 for value in your_dict.values())
all
返回True
如果給定的迭代的所有元素都是如此。
4
您可以使用any()方法,基本上它檢查布爾參數,但在這種情況下0將作爲False,任何其他數字作爲True。 試試這個代碼:
dict1 = {"a": 0, "b": 1}
dict2 = {"a": 0, "b": 0}
print not any(dict1.itervalues())
print not any(dict2.itervalues())
輸出:
False
True
EDIT2:一個旁註/警告,稱任何()的元素的空列表將返回FALSE。
7
隨着all
:
>>> d = {1:0, 2:0, 3:1}
>>> all(x==0 for x in d.values())
False
>>> d[3] = 0
>>> all(x==0 for x in d.values())
True
無論你使用any
或all
,評價會偷懶。 all
返回False
發現它遇到的第一個虛假值。 any
返回True
它遇到的第一個真值。
因此,not any(d.values())
會給你我提供的示例字典相同的結果。它比帶有生成器理解的all
版本稍短。就個人而言,我仍然喜歡all
變體,因爲它表達了你想要的東西,而讀者不必在他的腦海中做邏輯否定。
還有一個問題,使用any
在這裏,雖然:
>>> d = {1:[], 2:{}, 3:''}
>>> not any(d.values())
True
的字典裏沒有包含值0,但not any(d.values())
將返回True
,因爲所有的值都是falsy,即bool(value)
回報False
一個空列表,字典或字符串。
總結:可讀性計數是明確的,使用all
解決方案。
+0
如果所有的值都是_falsey_,那麼'not any'將被評估爲True,因此如果所有的值都等於'0',則不同於測試。 –
2
你也可以做到這一點使用任何其他方式:
>>> any(x != 0 for x in somedict.values())
如果返回true,則所有的鍵不爲0,否則所有按鍵均爲0
相關問題
- 1. 如何檢查python字典值中的任何數組中是否存在值?
- 2. 如何在PHP中檢查列值是否爲0或0?
- 3. 如何檢查Python中字典的值?
- 4. 如何在Python中檢查字符串是否有數字值?
- 5. 檢查字典值是否存在於Python中的另一個字典中
- 6. 是否有方法檢查所有數組項是否爲'0'?
- 7. 具有多個值的鍵 - 檢查值是否在字典中python
- 8. 檢查是否值在字典
- 9. 如何檢查字典項目是否在列表中? PYTHON
- 10. 如何檢查Python字典中是否存在多個鍵?
- 11. 使用LINQ檢查所有值是否爲「0」?
- 12. 檢查Python中的列表中是否有重複值(> 0)
- 13. 如何檢查是否可以在字典中找到所有子字符串
- 14. 如何檢查是否在字典(蟒蛇)存在的值
- 15. 更好的方法來檢查字典上的所有值是否爲真?
- 16. 如何刪除Python中的字典中的所有0?
- 17. 如何檢查ABNewPersonViewController中的所有字段是否爲空
- 18. 如何檢查字符串中的字符是否在值的字典中?
- 19. 如何檢查字典是否包含Swift iOS中的bool值?
- 20. 如何檢查在Python中的字典中的多個值
- 21. 在Python中查找字符串中是否存在字典值?
- 22. 如何檢查值是否爲數字?
- 23. 檢查列表是否已經在python中的字典中
- 24. 如何檢查所有元組是否在Python列表中具有特定值
- 25. 檢查項目是否在字典中,並且使用Python是否爲真
- 26. 檢查列表字典中是否有值的最佳方法?
- 27. 檢查單詞是否在字典中
- 28. Python - 檢查字典中的列表項是否存在
- 29. AS3:檢查字典是否爲空
- 30. PHP:檢查是否爲0?
你怎麼用做循環? –
我遍歷字典,並檢查所有的值,即對應於所有鍵的值,如果即使一個不是真的我改變了標誌值和爆發的循環。 –