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