考虑以下:
x = {1:2}
y = x.copy() # returns a new dictionary
y = x.copy().update({2:3}) # returns None
y = x.copy()[2] = 3 # invalid syntax
鉴于上述工作都没有,是否有办法将命令链接到Dict.copy()单个命令中复制和更新字典?
是的,您可以使用该dict()函数创建副本并添加关键字参数; 用于**{...}添加非Python标识符的任意键:
y = dict(x, **{2: 3})
对于恰好是有效Python标识符的字符串键(以字母开头,仅包含字母,数字和下划线),请使用关键字参数dict():
y = dict(x, foo_bar='spam_eggs')
您可以组合这两种样式,并添加更多键:
y = dict(x, foo='spam', bar='eggs', **{2: 3, 42: 81})
演示:
>>> x = {1: 2}
>>> dict(x, **{2: 3})
{1: 2, 2: 3}
>>> dict(x, foo_bar='spam_eggs')
{1: 2, 'foo_bar': 'spam_eggs'}
>>> dict(x, foo='spam', bar='eggs', **{2: 3, 42: 81})
{1: 2, 2: 3, 'foo': 'spam', 'bar': 'eggs', 42: 81}
>>> x  # not changed, copies were made
{1: 2}