假设我有一个容器,例如字典或列表。测试容器的所有值是否等于给定值(例如 None )的 Python 方法是什么?

我天真的实现只是使用一个 bool 标志,就像我在 C 中教我做的那样,所以代码看起来像。

a_dict = {
    "k1" : None,
    "k2" : None,
    "k3" : None
}

carry_on = True
for value in a_dict.values():
    if value is not None:
        carry_on = False
        break

if carry_on:
    # action when all of the items are the same value
    pass

else:
    # action when at least one of the items is not the same as others
    pass

虽然这种方法工作得很好,但考虑到 Python 处理其他常见模式的出色程度,它感觉并不正确。这样做的正确方法是什么?我想也许内置的 all() 函数会做我想做的事,但它只测试 bool 上下文中的值,我想与任意值进行比较。

最佳答案

如果添加 generator expression ,您仍然可以使用 all :

if all(x is None for x in a_dict.values()):

或者,使用任意值:
if all(x == value for x in a_dict.values()):

关于python - 如何测试容器中所有物品的值(value)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26762081/

10-16 20:38