[英]How to change the order of a list while keeping reference to the original 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
,对于这些params
, update_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.