我有一本字典,其中的值是一个元组
dict={'A':('1','2','3'),'B':('2','3','xxxx')....}
我需要找出所有值的第三个元素中是否有一个 '' 或 None。
它只需要一个布尔评估。
实现这一点的最简洁方法是什么?
这就是我所做的:
all(not v[2] for v in dict.values())
但我想这会有更好的“任何”形式吗?
我有一本字典,其中的值是一个元组
dict={'A':('1','2','3'),'B':('2','3','xxxx')....}
我需要找出所有值的第三个元素中是否有一个 '' 或 None。
它只需要一个布尔评估。
实现这一点的最简洁方法是什么?
这就是我所做的:
all(not v[2] for v in dict.values())
但我想这会有更好的“任何”形式吗?
蟒蛇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())
您可以使用 (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
这个怎么样:
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()] )
False
如果在第三个位置找到''
或未找到,并且找到其中一个值,它将返回。部分改编自Best way to check if a list is empty。None
True
reduce(lambda x,y: x and y[2] not in ('', None), d.values(), True)