评估字典的值

时间:2013-08-07 16:14:43

标签: python

我有一个字典,其值是元组

dict={'A':('1','2','3'),'B':('2','3','xxxx')....}

我需要知道所有值的第三个元素是否都有''或None 它只需要一个布尔评估 实现这一目标的最简洁方法是什么?

这就是我所做的:

all(not v[2] for v in dict.values())

但我想这会有更好的“任何”形式吗?

5 个答案:

答案 0 :(得分:4)

Python 2:

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())

答案 1 :(得分:4)

您可以使用(对Py2x使用itervalues())

all(elem[2] in ('', None) for elem in test.values())

参见演示 -

>>> 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

答案 2 :(得分:1)

这个怎么样:

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

答案 3 :(得分:0)

reduce(lambda x,y: x and y[2] not in ('', None), d.values(), True)

答案 4 :(得分:0)

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

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

如果在第三个位置找不到False'',则会返回None,如果找到其中一个值,则会True。部分改编自Best way to check if a list is empty