如何在一行代码中复制和修改dict

2021-06-19 15:01:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常需要创造一个或两个项目不同于另一个听写。以下是我通常做的事情:

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})

当然,我可以使用分号将两个命令压缩到一个物理行中,但这在我看来很难看。还有其他选择吗?

3条回答
网友
1楼 ·
setup2 = dict(setup1.items() + {'param1': val10, 'param2': val20}.items())

这样,如果在setup1中不存在新键,则会添加新键,否则会替换旧的键/值对。

网友
2楼 ·

可以在字典构造函数中使用关键字参数进行更新

new = dict(old, a=1, b=2, c=3)

# You can also unpack your modifications
new = dict(old, **mods)

这相当于:

new = old.copy()
new.update({"a": 1, "b": 2, "c": 3})

Source

注意:dict.copy()创建一个浅拷贝。

网友
3楼 ·

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

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

相关问题