60D6 – dict 和 set 的 15 个经典使用例子

15. 逻辑上合并字典

案例 3 中合并字典的方法:

In [94]: dic1 = {'x': 1, 'y': 2 }
In [95]: dic2 = {'y': 3, 'z': 4 }
In [96]: merged = {**dic1, **dic2} 

In [97]: merged
Out[97]: {'x': 1, 'y': 3, 'z': 4}

修改 merged[‘x’]=10,dic1 中的 x 值不变,merged 是重新生成的一个“新字典”。

但是,collections 模块中的 ChainMap 函数却不同,它在内部创建了一个容纳这些字典的列表。使用 ChainMap 合并字典,修改 merged[‘x’]=10 后,dic1 中的 x 值改变。

如下所示:

In [98]: from collections import ChainMap

In [94]: dic1 = {'x': 1, 'y': 2 }
In [95]: dic2 = {'y': 3, 'z': 4 }

In [99]: merged = ChainMap(dic1,dic2)

In [100]: merged
Out[100]: ChainMap({'x': 1, 'y': 2}, {'y': 3, 'z': 4})

In [101]: merged['x'] = 10

In [102]: dic1 # 改变,共用内存的结果
Out[102]: {'x': 10, 'y': 2}
页面: 1 2 3 4 5 6

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注