python 中的三元运算符与赋值

1 投票
6 回答
6949 浏览
提问于 2025-04-17 04:36

我刚开始学习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
>>> {}

撰写回答