繁体   English   中英

提供python字典的默认值,同时保留对原始对象的引用

[英]Provide default values for python dictionary while keeping reference to original object

我有以下python字典:

box = {
    'name': 'Test', 
    'length': 10, 
    'width': 20
}

将其传递给修改该对象的函数时,需要保留对该对象的引用。 该函数将提供缺少的默认信息(在此示例中为height ):

def update_box(params): 
    defaults = {
        'name': 'Default', 
        'length': 5, 
        'width': 5, 
        'height': 5
    }

    defaults.update(params)
    params = defaults

    return params

现在,我需要从函数外部访问box属性。 例如:

box = {
    'name': 'Test', 
    'length': 10, 
    'width': 20
}

update_box(box)

print box['name']  # should output 'Test'
print box['height']  # should output 5

当然,这是行不通的,因为update_box函数中的params = default行将params重新分配为defaults ,对于这些paramsupdate_box之外没有任何引用。 如果我删除该行,则box不会被修改。

我想做的是对dict update()方法进行某种逆操作,这将使我可以使用默认值为对象“填充空白”,同时仍然保留对原始对象的引用。 做这个的最好方式是什么?

另外,此示例也得到了简化,因此我不能仅使用update_box的返回值。 谢谢你的帮助!

您可以双向更新:

defaults.update(params)
params.update(defaults)

第一个更新确保保留原始参数中的值,而第二个更新直接修改参数。

或者,只需手动进行更新:

for k in defaults:
    params.setdefault(k, defaults[k])

但是,更好的选择可能是简单地返回一个新字典,而不是直接修改原始字典。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM