Как сделать проверку элементов словаря менее громоздкой?

Мне нужно сделать так, чтобы код после проверки выполнялся, если все элементы словаря имели значение 0. Как сделать код не таким громоздким?

if (dictionary['first'] == 0 and
        dictionary['second'] == 0 and
        dictionary['third'] == 0 and
        dictionary['fourth'] == 0 and
        dictionary['fifth'] == 0 and
        dictionary['sixth'] == 0 and
        dictionary['seventh'] == 0):
            print(0)

Проверка элементов циклом for возвращает True, если хоть один элемент = 0, а мне нужно, чтобы возвращало True, только если ВСЕ элементы = 0

for v in dictionary.values():
    if v == 0:
        print(0) 

Или

for k in dictionary.keys():
    if dictionary[k] == 0:
         print(0)

Ответы (4 шт):

Автор решения: Quel' Thas

полагаю, можно сделать флаг вот так:

 all_null = True

 for key in dict:
  if dict[key] != 0:
    all_null = False
    break

 if all_null: # TODO

→ Ссылка
Автор решения: Сергей

Например, так можно бы (получаем список значений словаря, суммируем, проверяем на равенство 0), но как указали в комментариях, идея плохая - при +1 и -1 тоже будет 0. Так что это пример, как коротко делать не надо:-)

if not sum (dictionary.values()):
    print(0)
→ Ссылка
Автор решения: Эникейщик

Попробуйте any(). Возвращает True, если хоть один из элементов имеет значение true. Т.к. требуется наоборот, то нужно подставить not:

if not any(d.values()):

PS. Здесь используется то, что 0 имеет логическое значение False.

→ Ссылка
Автор решения: CrazyElf

А если был бы не 0, а какое-то другое число n то в общем случае проверять можно было бы так:

if all(x == n for x in dictionary.values()):

all проверяет, что условие выполняется для всех элементов, причём, если один из элементов проверку не проходит, то проверка прекращается досрочно (аналог досрочного завершения цикла через break).

→ Ссылка