dict_a.update(dict_b)だと、dict_aの値をdict_bの値で上書きしてしまうので、上書きしないでマージする方法を調べてた。
# coding=utf-8 DEFAULT_OPTIONS = {'foo': 1, 'bar': 2} def sample_method(options=None): if not options: options = {} # 入力値を上書きしてしまう # options.update(default_options) # 入力値に不足があればdefault値を設定する options = dict(DEFAULT_OPTIONS.items() + options.items()) # do something.. print options sample_method() #=> {'foo': 1, 'bar': 2} sample_method(dict(foo=2)) #=> {'foo': 2, 'bar': 2} sample_method(dict(foo=2, bar=3)) #=> {'foo': 2, 'bar': 3} sample_method(dict(foo=2, bar=3, hoge=4)) #=> {'foo': 2, 'bar': 3, 'hoge': 4}
一応それっぽい動きになった