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