簡體   English   中英

使用字典存儲默認值

[英]Using a dictionary to store default values

我正在研究一個具有很多元參數的機器學習程序。 該程序的預期用途是研究學習過程本身,因此,我希望我將在許多不同的時間訓練模型,每次都更改元參數的子集,並將其余參數保留為默認值。

我認為實現此目的的最佳方法是使用默認參數字典,該參數字典中的任何值都可以由用戶覆蓋。

DEFAULT_PARAMETERS={
    "parameter_1": 1,
    "parameter_2": 2,
    #...
}

def main(**kwargs):
    parameters = {}
    for key in DEFAULT_PARAMETERS:
        if key in kwargs:
            parameters[key] = kwargs[key]
        else:
            parameters[key] = DEFAULT_PARAMETERS[key]

但是,我從未見過有人使用這種方法,為什么沒有呢? 另外,是否有一種列表理解語法,可以讓我在一行中實現上述循環?

對於python 3.5+

merged = { **DEFAULT_PARAMETERS, **kwargs }

這將達到目的。 **語法擴展了字典。 小心! 訂單很重要!

相關PEP

但是,我從未見過有人使用這種方法

您是否了解其他人的代碼? 可能不是(提示:這是一個非常常見的模式,但實際上已實現)

有沒有理由嗎?

不,那只是顯而易見的事情。

另外,是否有一種列表理解語法,可以讓我在一行中實現上述循環?

對於python 3.5+,您可以嘗試使用Vittorio Camisa的解決方案,但是該解決方案可以在Python 3.x和最新的Python 2.7.x版本中使用:

parameters = {k: kwargs.get(k, v) for k, v in DEFAULT_PARAMETERS.items()}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM