Подтвердить что ты не робот

Проверьте, соответствует ли какое-либо значение словаря условию

Как программист на Python проверяет, соответствует ли какое-либо значение словаря условию (в моем случае оно больше 0). Я ищу самый "питонический" способ, который имеет минимальное влияние на производительность.

мой словарь:

pairs = { 'word1':0, 'word2':0, 'word3':2000, 'word4':64, 'word5':0, 'wordn':8 }

Я использовал эти 2 (чудовищные?) Методы до сих пор.

1:

options = pairs.values() # extract values
for i in options:
    if i > 0:
        return True
return False

2:

options = sorted(pairs.items(), key=lambda e: e[1], reverse=True) # rank from max to min
if options[0][1] > 0:
    return True
else:
    return False
4b9b3361

Ответ 1

Вы можете использовать any [docs]:

>>> pairs = { 'word1':0, 'word2':0, 'word3':2000, 'word4':64, 'word5':0, 'wordn':8 }
>>> any(v > 0 for v in pairs.itervalues())
True
>>> any(v > 3000 for v in pairs.itervalues())
False

См. Также all [docs]:

>>> all(v > 0 for v in pairs.itervalues())
False
>>> all(v < 3000 for v in pairs.itervalues())
True

Поскольку вы используете Python 2.7, .itervalues(), вероятно, немного лучше, чем .values() потому что он не создает новый список.