4

在 javascript 中,我们可以使用 || 运算符来设置一个变量,因为它在第一个表达式处停止,结果是一个真值。
python中以下内容的等价物是什么?

var myNumber = dictionary['myNumber'] || 3
4

6 回答 6

4

我会去

myNumber = dictionary.get('myNumber', 3)

如果你只想要一个真值或 3,那么你会这样做:

myNumber = dictionary.get('myNumber') or 3
于 2013-07-09T00:36:40.980 回答
2
myNumber = dictionary['myNumber'] if dictionary['myNumber'] else 3
于 2013-07-09T00:35:42.877 回答
0

同样简单,只需使用or而不是||

myNumber = dictionary['myNumber'] or 3
于 2013-07-09T00:36:26.777 回答
0

您可以使用dict.get和使用or来代替||

Python:

>>> dic = {'a':1, 'b': False}
>>> dic.get('a') or 3
1
>>> dic.get('b') or 3           #Key with falsy value
3
>>> dic.get('c') or 3           #missing key
3

JS:

> dic = {'a':1, 'b': false}
> dic['a'] || 3
1
> dic['b'] || 3
3
> dic['4'] || 3
3

请注意,在 python 和 js 中定义的值集Falsy可能会有所不同,因此对于案例的答案可能会有所不同。

于 2013-07-09T00:38:54.480 回答
0

相同的想法,不同的语法:

myNumber = dictionary.get('myNumber') or 3

.get()对于不存在的键返回None(非真实),或者如果键存在则返回值本身,就像 javascript 的[]. or评估它遇到的第一个真实值,就像 javascript 的||.

于 2013-07-09T01:04:15.563 回答
-1

您需要捕获由不存在的值引发的错误,如下所示:

try:
    myNumber = dictionary['myNumber']
except KeyError:
    myNumber = 3

然后你可以把它构建成一个函数:

def dictAssign(dictionary,attempt,fail):
    try:
        return dictionary[attempt]
    except KeyError:
        return fail

然后你可以通过调用函数来使用它:

myNumber = dictAssign(dictionary,"myNumber",3)
于 2013-07-09T00:54:19.660 回答