python dict中的可选参数

python dict中的可选参数,python,dictionary,Python,Dictionary,有没有办法将可选参数包含到Python字典中 例如,我有以下get请求的返回语句。它们依赖于输入,基本相同 如果该区域作为输入参数传递,则我们有: if region: return { 'success': True, 'result': { 'country': country, 'region': region, # optional region param 'cities'

有没有办法将可选参数包含到Python字典中

例如,我有以下get请求的返回语句。它们依赖于输入,基本相同

如果该区域作为输入参数传递,则我们有:

if region:
    return {
        'success': True,
        'result': {
            'country': country,
            'region': region, #  optional region param
            'cities': cities
        }
    }
如果城市通过:

if city:
    return {
        'success': True,
        'result': {
            'country': country,
            'city': city, #  optional city param
            'cities': cities
        }
    }
如果未通过任何城市或地区:

return {
    'success': True,
    'result': {
        'country': country,
        'cities': cities
    }
}
我想要的是一个返回语句:

return {
    'success': True,
    'result': {
        'country': country,
        if region: 'region': region, #  I know this and the next lines don't work
        if city: 'city': city,
        'cities': cities
    }
}

Control语句不允许与dict文字一起使用,但这样做很简单:

r = {
    'country': country,
    'cities': cities
}

if region: 
    r['region'] = region
if city: 
    r['city'] = city

return {
    'success': True,
    'result': r
}
选择1 如其他答案中所述,在本地创建一个字典,并在此过程中添加可选参数

选择2 使用函数返回的词典时,请使用

retdict.get('city','defaultvalue')
而不是
retdict['city']
,以确保尝试获取不存在的参数时不会失败

选择3
使用
defaultdict
。和中列出了一些易于理解的示例,您可以将所有键传递给dict,然后使用
None
值筛选键。检查如何过滤dict。