如何以Pythonic方式修复字典中的默认值?

5 投票
4 回答
638 浏览
提问于 2025-04-17 03:52

我正在使用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的回答

撰写回答