np.where是否会在条件不满足时也评估“if-true”?

2024-10-01 13:40:23 发布

您现在位置: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 Traceback (most recent call last) ' in () ----> 1 np.where('value' in ex2, ex2['value'], 1)

KeyError: 'value'

它似乎ex2['value']似乎是在一个条件没有满足的情况下被评估的。我说得对吗?我该怎么调整呢?你知道吗


Tags: 方法keyinnumbermost字典value错误
2条回答
np.where('value' in ex2, ex2.get('value'), 1)

对于更简单的解决方案,请使用dictionary .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

相关问题 更多 >