设置默认值的Python方式

设置默认值的Python方式,python,default-value,Python,Default Value,有没有一种在python中设置默认值的简单方法——特别是在dict中设置默认值 例如,假设我有一个名为foo的dict,它可能在键栏上指定了什么,也可能没有。详细的方法是: if not foo.has_key('bar'): foo['bar'] = 123 一个备选方案是: foo['bar'] = foo.get('bar',123) 是否有一些标准的python方法可以做到这一点——类似于下面的方法,但实际上是可行的 foo['bar'] ||= 123 (错误答案的第一部分被

有没有一种在python中设置默认值的简单方法——特别是在dict中设置默认值

例如,假设我有一个名为
foo
的dict,它可能在键
上指定了什么,也可能没有。详细的方法是:

if not foo.has_key('bar'):
  foo['bar'] = 123
一个备选方案是:

foo['bar'] = foo.get('bar',123)
是否有一些标准的python方法可以做到这一点——类似于下面的方法,但实际上是可行的

foo['bar'] ||= 123
(错误答案的第一部分被删掉)

Dict
s有一个
setdefault()
方法,它与
get()
一样工作,只有在缺少键时才插入值

foo.setdefault('bar', 123)
干杯。

你可以去看看

没有人读过吗


+1因为这看起来很有意思。不幸的是,现在,我正在处理Django中的
请求。session
,因此我无法将其重新定义为
defaultdict
foo.get('bar')或123
与检查
foo.has_key('bar')
。考虑<代码> Fo[[Bar ] ]=0 < /代码>。不要使用<代码> HasyKy()/代码>在Fo< <代码>中使用<代码>“Bar”来测试成员资格。@ J.F. Sebastian为什么?对我来说,seu-key似乎更明确了——在某些情况下,foo中的“bar”更合适吗?此外,当foo不一定是dict时?
has_key()
被弃用(它从python3.0开始被删除)。原因可能是“应该有一种——最好只有一种——显而易见的方法来做到这一点。”@J.F.塞巴斯蒂安-很高兴知道-谢谢。
foo.setdefault('bar', 123)