我有以下Python字典:爲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
當然,這並不工作,因爲params = default
線在update_box
功能重新分配到params
defaults
,對於其存在的update_box
之外沒有參考。 如果我刪除該行,則box
未被修改。
我想要做的是有某種字典update()
方法的反轉, 允許我用默認值「填充空白」,同時仍保留對原始對象的引用。 這樣做的最好方法是什麼?
另外,這個例子被簡化了,所以我不能只使用update_box
的返回值。謝謝你的幫助!
爲什麼不使用'params.update(默認值)'? – zhangyangyu
因爲這會覆蓋'params'中的值。打印'box ['name']'會導致「Default」而不是「Test」 – Divey
注意:在Python中,字典中未加引號的鍵是變量,而不是字符串。 '{name:'Test'}'將嘗試查找'name'變量並將其值用作關鍵字。 – user2357112