为什么get和setdefault的组合不能按预期工作?

2024-04-26 01:09:28 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的例子中,除了x == False之外,我期望x == True

k = 'key'
d = dict()
x = d.get(k, not d.setdefault(k, False))

print(d) # {'key': False}
print(x) # False

为什么会这样

无论如何,我希望方法在第一次调用时返回True,否则返回False。我想实现这样一个类并不难,但我认为应该有一种内置的方式

试用了python3.6 Anaconda


Tags: 方法keyfalsetrueget方式notanaconda
1条回答
网友
1楼 · 发布于 2024-04-26 01:09:28

在调用.get()之前对dict.get()的参数求值。因此setdefault已经发生了。怎么样:

x = d.get(k) or not d.setdefault(k, True)

测试代码:

k = 'key'
d = dict()
x = d.get(k) or not d.setdefault(k, True)

print(d)  # {'key': False}
print(x)  # False

结果:

{'key': True}
False

相关问题 更多 >