Проверьте, соответствует ли какое-либо значение словаря условию
Как программист на 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
Ответы
Ответ 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()
потому что он не создает новый список.