Python 计算字典的值

Python 计算字典的值,python,Python,我有一本字典,里面的值是元组 dict={'A':('1','2','3'),'B':('2','3','xxxx')....} 我需要找出所有值的第三个元素中是否都有“”或无任何值。 它只需要是一个布尔运算。 实现这一点最简洁的方法是什么 这就是我所做的: all(not v[2] for v in dict.values()) 但我想这会有一个更好的“any”形式?Python2: boolean = all(value[2] in ('', None) for value in you

我有一本字典,里面的值是元组

dict={'A':('1','2','3'),'B':('2','3','xxxx')....}
我需要找出所有值的第三个元素中是否都有“”或无任何值。
它只需要是一个布尔运算。
实现这一点最简洁的方法是什么

这就是我所做的:

all(not v[2] for v in dict.values())
但我想这会有一个更好的“any”形式?

Python2:

boolean = all(value[2] in ('', None) for value in your_dict.itervalues())
Python 3:

boolean = all(value[2] in ('', None) for value in your_dict.values())
您可以使用(对Py2x使用itervalues())

请参见演示-

>>> test = {'a': (1, 2, None), 'b':(2, 3, '')}
>>> all(elem[2] in ('', None) for elem in test.values())
True
>>> test['c'] = (1, 2, 3)
>>> all(elem[2] in ('', None) for elem in test.values())
False
这个怎么样:

all(dict[k][2] is None or dict[k][2] == "" for k in dict)

以下是一个简单的功能解决方案:

not filter( lambda l : not l, [ v[2] for v in d.values()] )

如果在第三个位置未找到
'
None
,则返回
False
,如果找到其中一个值,则返回
True
。部分改编自。

能否显示您的尝试?您所说的“任何”形式是什么意思?您是否在问是否有一种方法可以用
any()
来写这篇文章?它应该是
any(v[2]不是None,v[2]!=''表示dict.values()中的v)
。顺便说一句,如果您正在检查
'
,您不应该依赖这两个值的真实性,因为您也可能会错误地评估某个整数或列表的真实性。调用
值()
将创建字典值列表,该列表可能很大
itervalues()
将是一个更好的选择,就像@JAB的解决方案一样。@nofinator:我很抱歉。我在Py3x上测试了这段代码,完全忘记了添加itervalue。谢谢你提醒我。:)
reduce(lambda x,y: x and y[2] not in ('', None), d.values(), True)
not filter( lambda l : not l, [ v[2] for v in d.values()] )