【发布时间】:2016-09-19 07:18:26
【问题描述】:
如果键有关联的数组,我会在表中查找。按照设计,我的table.__getitem__() somtimes 返回None 而不是KeyError-s。我希望这个值是 None,或者是与 w 关联的 numpy 数组。
value = table[w] or table[w.lower()]
# value should be a numpy array, or None
if value is not None:
stack = np.vstack((stack, value))
只有当我使用上面的代码,并且第一次查找是匹配时,我才会得到:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
如果我选择value = table[w].any() or table[w.lower()].any(),那么如果不匹配,我可能会遇到:
AttributeError: 'NoneType' object has no attribute 'any'
我一定是错过了正确的方法,怎么办?
【问题讨论】:
-
this other question 的明显转贴,因为那里的正确答案不能满足我的需要。如果可能的话,我想要一个比
if table[w] is not None: ... elif table[w.lower()] is not None: ... else更短的方法。 -
@Goyo: 如果
a是一个数组,v = a or b会引发ValueError(如果a是None并且b是一个数组,则不会) -
a = None .... isinstance(a, (type(None))) # True .... 如果 a 是其他值,它将返回 false。显然只对 None 之间的分支有用,如果你能保证 'a' 将是数组的某种化身
-
@Nikana 你的问题不清楚。 “我希望这个值是
None...” 你什么时候希望它是 None? “或与w关联的numpy 数组” 关联数组是什么?table[w]?table[w.lower()]?您遇到的错误是意料之中的,但我不明白您想要实现什么。 -
@Goyo:如果表在 w 上没有返回值,而在 w.lower() 上没有返回值,我希望值为 None。否则,成为第一个非无值(所以是的,理想情况下,table[w])。