有没有更优雅的方式在Python中编写它?

时间:2014-05-23 04:54:37

标签: python python-2.7

我想将'status'附加到由'update_fields'索引的dict值,或者将['status']作为值添加到由'update_fields'索引的kwargs,如果该密钥不存在的话。

kwargs.setdefault('update_fields', kwargs.get('update_fields', []).append('status'))

这是或者大约3行代码,当然python可以做得比这更好!

2 个答案:

答案 0 :(得分:6)

getsetdefault基本上是两种做同样事情的方法;把它们放在一起就是重复自己。 getsetdefault之间的唯一区别是,如果默认值不存在,则setdefault 设置值。在那之后,它们在语义上是相同的。

所以这一部分:

kwargs.get('update_fields', [])

..是多余的。如果字典没有该键的值,setdefault设置默认值(并返回它,如get),否则它只查找与该键关联的值。

所以你需要的只是:

kwargs.setdefault('update_fields', []).append('status')

答案 1 :(得分:5)

你不需要kwargs.get()位,setdefault只设置值,如果它还没有,你可以写:

kwargs.setdefault('update_fields', []).append('status')
相关问题