带赋值的python三元运算符
我是python新手。我正试着写这个带赋值的python三元运算符,python,Python,我是python新手。我正试着写这个 if x not in d: d[x] = {} q = d[x] 以更简洁的方式使用三元运算符 q = d[x] if x in d else (d[x] = {}) 但这会导致语法错误。我遗漏了什么?之所以else(d[x]={})是语法错误,是因为在Python中,赋值是语句。但是条件运算符需要表达式,虽然每个表达式都可以是语句,但并非每个语句都是表达式。Python中的条件运算符仅用于表达式,而赋值是语句。你可以用 q = d.setde
if x not in d:
d[x] = {}
q = d[x]
以更简洁的方式使用三元运算符
q = d[x] if x in d else (d[x] = {})
但这会导致语法错误。我遗漏了什么?之所以
else(d[x]={})
是语法错误,是因为在Python中,赋值是语句。但是条件运算符需要表达式,虽然每个表达式都可以是语句,但并非每个语句都是表达式。Python中的条件运算符仅用于表达式,而赋值是语句。你可以用
q = d.setdefault(x, {})
在这种情况下,为了达到预期效果。另请参见Python中的。,赋值不能出现在表达式中,因此不能编写类似
a=(b=c)
的代码
您正在寻找:
或者,使用。这就是它的用途:
它正是您想要的:
- 如果
是x
中的一个键,则返回d
d[x]
- 如果
还不是键,则将x
分配给{}
,并返回该键d[x]
q=d[x]如果x在d else{}
条件表达式的形式为
x if C else y
,根据条件C
计算并返回x
或y
的值。然后将结果分配给q
您还可以使用Python的dictionary get()方法
说明:
如果键在字典中,get()方法返回指定键的值
get()的语法是:
get()参数
get()方法最多使用两个参数:
键-要在字典中搜索的键
值(可选)-未找到密钥时返回的值。默认值为“无”
从get()返回值
get()方法返回:
- 如果键在字典中,则指定键的值
- 如果找不到键且未指定值,则为“无”
- 如果找不到键并且指定了值,则返回值
这是个老问题。。。不幸的是,您的答案不正确-我正在寻找一种方法来返回一个空的dict,并同时将其分配给
d[x]
-这是您的代码无法做到的(请检查其他答案)。尽管如此,+1表示感谢,欢迎来到SO!谢谢你指出我的错误。我编辑了我的答案以反映其不完整性。还有,谢谢你的热情欢迎!
q = d.setdefault(x, {})
q = d.setdefault(x, {})
q = d.get(x, {})
dict.get(key[, value])
from collections import defaultdict
d = defaultdict(dict)
q = d[x]
>>> q
>>> {}