python中dict条目的空值合并

Posted

技术标签:

【中文标题】python中dict条目的空值合并【英文标题】:Null coalescing on a dict entry in python 【发布时间】:2019-04-15 05:22:49 【问题描述】:

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

variable_name = other_variable or 'something else'

...如果other_variable 为假,则将'something else' 分配给variable_name,否则将other_variable 值分配给variable

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

variable_name = my_dict['keyname'] or 'something else'

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

【问题讨论】:

使用get方法my_dict.get('keyname', 'something else') 【参考方案1】:

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

variable_name = my_dict.get('keyname', False) or 'something else'

使用此逻辑,当 'keyname' 不存在或 my_dict['keyname'] 为 Falsy 时,分配 'something else'

【讨论】:

你的回答是正确的,但我想指出的是,在这种情况下我们通常需要的是my_dict.get('keyname', 'something else') @Gabriel,不,my_dict.get('keyname', 'something else')my_dict = 'key_name':0 不正确。在这种情况下,OP 需要'something else' 我知道,这就是为什么我说你的答案是正确的。我刚刚注意到,在处理 dicts 时,我们通常(并非总是)希望缺失键的默认值,而不是虚假值。 OP 100% 清楚,这就是为什么我可以说你是正确的(否则我不能肯定地说)。我之前的建议是针对任何可以阅读您的答案的人,而不仅仅是 OP。例如,如果有人在函数中有可选参数(如f(a=None))并转换为 kwargs,则需要测试丢失的键,而不是错误的值。阅读您的答案可能并不明显,因此我留下了建议。我并不是在暗示你的答案是错误的。 谢谢!老实说,我并没有认为我是这个意思,但它让我意识到这个场景正是我所需要的。 :)

以上是关于python中dict条目的空值合并的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.NullPointerException:条目中的空值:lastScrollData=null

数据库中的空值与NULL的区别以及python中的NaN和None

数据库中的空值与NULL的区别以及python中的NaN和None

数据库中的空值与NULL的区别以及python中的NaN和None

数据库中的空值与NULL的区别以及python中的NaN和None

Pyspark:如何处理 python 用户定义函数中的空值