python字典合并操作符的原理

python字典合并操作符的原理
python字典合并操作符的原理

1、新的操作符与dict.update方法的关系与列表连接(+)、扩展(+=)操作符与list.extend方法的关系相同。值得注意的是,这与集中|/|=操作符与set.update的关系稍有不同。作明确了允许本地操作符接受更广泛的类型(如list)是更有用的设计,限制二进制操作符的操作数类型(如list)有助于避免复杂的隐藏类型转换引起的错误。

>>> l1 = [1, 2]
>>> l1 + (3,) # 限制操作数的类型,不是列表就报错
Traceback (most recent call last)
...
TypeError: can only concatenate list (not "tuple") to list
>>> l1 += (3,) # 允许就地运算符接受更广泛的类型(如元组)
>>> l1
[1, 2, 3]

2、合并字典发生键冲突时,以最右边的值为准。这符合现有字典的类似操作。

{'a': 1, 'a': 2} # 2 覆盖 1
{**d, **e}       # e覆盖d中相同键所对应的值
d.update(e)      # e覆盖d中相同键所对应的值
d[k] = v         # v 覆盖原有值
{k: v for x in (d, e) for (k, v) in x.items()} # e覆盖d中相同键所对应的值

发表评论

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