Chcę sprawdzić, czy wszystkie wartości, tj. Wartości odpowiadające wszystkim kluczom w słowniku, są równe 0. Czy jest jakiś sposób, aby zrobić to bez pętli? Jeśli tak to jak?Jak sprawdzić, czy wszystkie wartości słownika są równe 0 w Pythonie?
Odpowiedz
użycie all()
:
all(value == 0 for value in your_dict.values())
all
powraca True
jeśli wszystkie elementy danego iterowalny są prawdziwe.
Możesz użyć metody any(), w zasadzie sprawdza ona boolowskie parametry, ale 0 będzie działać jako Fałsz w tym przypadku, a każda inna liczba jako Prawda. Spróbuj kod:
dict1 = {"a": 0, "b": 1}
dict2 = {"a": 0, "b": 0}
print not any(dict1.itervalues())
print not any(dict2.itervalues())
wyjściowa:
False
True
Edit2: jeden sidenote/ostrożność, nazywając każdy() z pustą listą elementów zwróci false.
Z 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
Bez względu na to, czy używasz any
lub all
, ocena będzie leniwy. all
zwraca False
z pierwszej napotkanej wartości falsyfikatu. any
zwraca True
o pierwszej prawdziwej wartości, jaką napotyka.
W ten sposób not any(d.values())
da taki sam wynik dla przykładowego słownika, który podałem. Jest nieco krótszy niż wersja all
ze zrozumieniem generatora. Osobiście nadal lubię wariant all
lepiej, ponieważ wyraża to, czego chcesz, bez konieczności czytania logicznej negacji w głowie.
Jest jeszcze jeden problem z użyciem any
tutaj, choć:
>>> d = {1:[], 2:{}, 3:''}
>>> not any(d.values())
True
Słownik nie zawiera wartość 0, ale not any(d.values())
powróci True
ponieważ wszystkie wartości są falsy, tj bool(value)
Przywraca False
dla pustej listy , słownik lub ciąg znaków.
Podsumowując: czytelność się liczy, bądź jednoznaczny, użyj rozwiązania all
.
Parametr 'not any' ma wartość True, jeśli wszystkie wartości to _falsey_, więc różni się od sprawdzania, czy wszystkie wartości są równe' 0'. –
Można również zrobić to w inny sposób, za pomocą dowolnego:
>>> any(x != 0 for x in somedict.values())
Jeśli zwraca True, wszystkie klawisze są nie 0, w przeciwnym wypadku wszystkie przyciski są 0
- 1. Jak sprawdzić, czy wszystkie wartości w tablicy są równe
- 2. Jak sprawdzić, czy wszystkie wiersze są równe w numpy?
- 3. Jak mogę sprawdzić, czy wartości wielu komórek są równe?
- 4. Sprawdź, czy wszystkie wartości są równe na liście:
- 5. Jak sprawdzić, czy wszystkie wartości w tablicy są identyczne?
- 6. Dlaczego wartości OrderedDict nie są równe?
- 7. Jeśli dwie rzeczy nie są równe, czy są równe?
- 8. Jak sprawdzić, czy bieżące ustawienia narodowe są równe ciągowi znaków
- 9. jak sprawdzić, czy 2 pliki są równe przy użyciu .NET?
- 10. Lua - Czy można sprawdzić, czy 2 funkcje są równe?
- 11. Funkcja rekursywna, aby sprawdzić, czy wszystkie cyfry w zmiennej int są równe
- 12. , aby sprawdzić, czy wszystkie EditText są puste
- 13. Dołączanie wartości do słownika w Pythonie
- 14. Pandy - sprawdzić, czy wszystkie wartości są NaN szeregowo
- 15. Jak sprawdzić, czy podwójne jest równe NaN?
- 16. Jak sprawdzić poprawność struktury (lub schematu) słownika w Pythonie?
- 17. Dlaczego wartości "Nie liczba" są równe Prawdziwe, gdy są rzutowane jako boolean w Pythonie/Numpy?
- 18. Jak sprawdzić, czy wszystkie wartości w kolumnach macierzy numpy są takie same?
- 19. IDataErrorInfo: Jak sprawdzić, czy wszystkie właściwości są prawidłowe?
- 20. Sprawdź, czy dwie funkcje std :: są równe
- 21. Ustal, czy wszystkie elementy macierzy są połączone w Pythonie
- 22. Sprawdź, czy dwa typy ogólne są równe
- 23. słownika Grupa w Pythonie
- 24. Jak sprawdzić, czy elementy tablicy są wszystkie Różne Java
- 25. Tworzenie słownika 2D w Pythonie
- 26. Jak sprawdzić, czy wszystkie pola wyboru są odznaczone?
- 27. Listy są takie same, ale nie są uważane za równe?
- 28. Jak korzystać Zmienić wartości słownika?
- 29. Jak mogę wyrazić, że dwie wartości nie są sobie równe?
- 30. Jak działa polecenie order by, jeśli dwie wartości są równe?
Jak to zrobiłeś z pętla? –
Przeszedłem przez słownik i sprawdziłem wszystkie wartości, tj. Wartości odpowiadające wszystkim klawiszom, nawet jeśli nie był on prawdziwy, zmieniłem wartość flagi i wyskoczyłem z pętli. –