python 中的三元运算符与赋值
我刚开始学习Python,想把这段代码
if x not in d:
d[x] = {}
q = d[x]
用更简洁的方式写出来,打算使用三元运算符
q = d[x] if x in d else (d[x] = {})
但是这样写会出现语法错误。我哪里做错了呢?
6 个回答
4
在Python中,赋值不能出现在表达式里,所以你不能写像 a = (b = c)
这样的代码。
你可以使用 setdefault
:
q = d.setdefault(x, {})
另外,你也可以使用 defaultdict
。
11
在Python中,条件运算符只用于表达式,而赋值是语句。你可以使用
q = d.setdefault(x, {})
来实现你想要的效果。有关更多信息,可以查看dict.setdefault()的文档。
1
你还可以使用Python中的字典的get()方法
q = d.get(x, {})
解释:
get()方法会返回字典中指定键的值,如果这个键存在的话。
get()的语法是:
dict.get(key[, value])
get()的参数
get()方法最多可以接收两个参数:
key - 要在字典中查找的键
value(可选)- 如果找不到这个键时要返回的值。默认值是None。
get()的返回值
get()方法的返回结果是:
- 如果字典中有这个键,就返回对应的值。
- 如果找不到这个键,并且没有指定返回值,就返回None。
- 如果找不到这个键,但指定了返回值,就返回你指定的值。
另一种选择是使用defaultdict
from collections import defaultdict
d = defaultdict(dict)
q = d[x]
>>> q
>>> {}