很多时候,我需要创建一个或两个彼此不同的字典。这是我通常的工作:

setup1 = {'param1': val1,
            'param2': val2,
            'param3': val3,
            'param4': val4,
            'paramN': valN}

setup2 = copy.deepcopy(dict(setup1))
setup2.update({'param1': val10,
                   'param2': val20})

程序中的某个点setup2setup1的相同副本,这一事实使我感到紧张,因为我担心在程序生命中的某些时刻,这两行可能会分开,这也容易导致许多错误。

理想情况下,我希望能够在一行代码中完成此操作(类似这样):
setup2 = dict(setup1).merge({'param1': val10,
                        'param2': val20})

当然,我可以使用分号将两个命令压缩为一条物理行,但这对我来说看起来很丑。还有其他选择吗?

最佳答案

我认为最简单的方法是这样的:

new_dict = {**old_dict, 'changed_val': value, **other_new_vals_as_dict}

07-27 20:44