我有一个字典,其值是元组
dict={'A':('1','2','3'),'B':('2','3','xxxx')....}
我需要知道所有值的第三个元素是否都有''或None 它只需要一个布尔评估 实现这一目标的最简洁方法是什么?
这就是我所做的:
all(not v[2] for v in dict.values())
但我想这会有更好的“任何”形式吗?
答案 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。