python程序员如何检查字典的任何值是否匹配某个条件(在我的例子中大于0)。我正在寻找对性能影响最小的最“蟒蛇式”方式。
我的字典:

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

我用了这两个(怪物?)迄今为止的方法。
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

最佳答案

您可以使用:

>>> 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(v > 0 for v in pairs.itervalues())
False
>>> all(v < 3000 for v in pairs.itervalues())
True

因为您使用的是python 2.7,any可能比all要好一点,因为它不会创建新的列表。

关于python - 检查字典的任何值是否与条件匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12376079/

10-11 20:13