即使在不满足条件的情况下,np.where也会评估“如果为真”?

时间:2019-03-15 13:12:46

标签: python

ex1 = {'value': '1, 2, 2, 3, 2, 2, 3, 3, 4, 3, 3, 5, 5, 5, 5, 5, 5, 5', 'number': '1197916152', 'key': '44'}
ex2 = {'number': '1197916152', 'key': '2'}

我有如上所述的字典。我需要检查dict是否包含value键,如果不包含,请返回1。我尝试了以下方法:

np.where('value' in ex1, ex1['value'], 1)
np.where('value' in ex2, ex2['value'], 1)

虽然可以在ex1上正常运行,但会在ex2上返回错误:

  

KeyError跟踪(最近的呼叫   last)'in()   ----> 1 np.where(ex2中的'value',ex2 ['value'],1)

     

KeyError:'值'

即使不满足条件,似乎ex2['value']也会得到评估。我对吗?我该如何调整呢?

2 个答案:

答案 0 :(得分:3)

对于一个更简单的解决方案,请使用字典.get方法来获取value键的内容,并在不存在1的情况下将其设置为默认值:

ex1.get('value', 1)

ex1.get('value', 1)
# '1, 2, 2, 3, 2, 2, 3, 3, 4, 3, 3, 5, 5, 5, 5, 5, 5, 5'

ex2.get('value', 1)
# 1

答案 1 :(得分:0)

np.where('value' in ex2, ex2.get('value'), 1)