如何以Pythonic方式修复字典中的默认值?
我正在使用JSON库来解析JSON请求,这个库会把数据解析成Python字典。因为这些请求是用户生成的,所以我需要为那些没有提供的参数设置默认值。其他编程语言有像三元运算符这样的东西,可以让重复的操作变得更简单。但下面的代码每个参数都需要写4行。
if "search_term" in request.keys():
search_term=request['search_term']
else:
search_term=""
if "start" in request.keys():
start=request['start']
else:
start=0
if "rows" in request.keys():
rows=request['rows']
else:
rows=1000000
有没有什么更Python风格的方法,可以减少代码行数或者让代码更易读呢?
编辑: 上面的两个答案都很有用。我在不同的情况下都用了这两个方法。
4 个回答
2
Python 的字典有一个叫 get()
的函数,它可以接收一个默认值参数(你可以在 这里 查看详细信息)。所以你可以这样做:
params.get('search_term', '')
params.get('some_other_field', 0)
等等。
补充说明:你可能想使用上面 Petr 提到的 update
方法。
13
你可以使用字典的方法 get
,这个方法的第二个参数是一个默认值,当字典里没有对应的值时,就会返回这个默认值。
start = request.get('start', 0)
15
使用 dict.update
方法在默认值的副本上进行操作:
defaults = dict(a=1, b=2, c=3)
result = dict(defaults) # Copy the defaults
result.update(request) # Update with your values
这样你就可以把 defaults
保持为一个类属性或者模块的全局变量,这样做通常是比较好的选择。
你还可以把最后两行合并成:
result = dict(defaults, **request)
如果想要其他解决方案,可以看看 Kevin的回答。