0

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

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

我需要找出所有值的第三个元素中是否有一个 '' 或 None。
它只需要一个布尔评估。
实现这一点的最简洁方法是什么?

这就是我所做的:

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

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

4

5 回答 5

4

蟒蛇2:

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

蟒蛇 3:

boolean = all(value[2] in ('', None) for value in your_dict.values())
于 2013-08-07T16:18:46.210 回答
4

您可以使用 (Use itervalues() for Py2x)

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
于 2013-08-07T16:18:56.060 回答
1

这个怎么样:

all(dict[k][2] is None or dict[k][2] == "" for k in dict)
于 2013-08-07T16:19:33.583 回答
0

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

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

False如果在第三个位置找到''或未找到,并且找到其中一个值,它将返回。部分改编自Best way to check if a list is emptyNoneTrue

于 2013-08-08T00:06:17.870 回答
0
reduce(lambda x,y: x and y[2] not in ('', None), d.values(), True)
于 2013-08-07T23:52:25.077 回答