python 中字典条目的空合并

Owe*_*nes 7 python dictionary null-coalescing

所以,我知道,在 Python 中我可以这样做:

variable_name = other_variable or 'something else'
Run Code Online (Sandbox Code Playgroud)

...并且将分配'something else'variable_nameifother_variable是假的,否则将other_variable值分配给variable

我可以用字典做一个简洁的类似的事情吗:

variable_name = my_dict['keyname'] or 'something else'
Run Code Online (Sandbox Code Playgroud)

...或者不存在的键名总是会引发错误,导致失败?

jpp*_*jpp 9

您将看到您的字典中KeyError是否'keyname'不存在。相反,您可以使用:

variable_name = my_dict.get('keyname', False) or 'something else'
Run Code Online (Sandbox Code Playgroud)

使用此逻辑,当不存在或为 Falsy时,'something else'将被赋值。'keyname'my_dict['keyname']

  • 你的答案是正确的,但我想指出的是,在这种情况下我们通常需要的是`my_dict.get('keyname', 'something else')`。 (5认同)
  • @Gabriel,不,“my_dict.get('keyname', 'something else')”对于“my_dict = {'key_name':0}”来说是不正确的。在这种情况下,OP 会想要“其他东西”。 (2认同)
  • OP 100% 清楚,这就是为什么我可以说你是正确的(否则我不能肯定地说)。我之前的建议是针对任何可以阅读您的答案的人,而不仅仅是OP。例如,如果某人在函数中有可选参数(如“f(a=None)”)并转换为 kwargs,则人们会想要测试缺失的键,而不是错误的值。阅读你的答案可能不太明显,所以我留下了一个建议。我并不是暗示你的答案是错误的。 (2认同)
  • 谢谢!老实说,我并没有_认为_我是这个意思,但这让我意识到这个场景正是我所需要的。:) (2认同)