使用python重写键值对时浅拷贝dict

使用python重写键值对时浅拷贝dict,python,dictionary,copy,key-value,Python,Dictionary,Copy,Key Value,我试图复制一个dict,同时在执行复制时跳过其中一个键值对。我以为这样做是可能的,但这不起作用。有办法做到这一点吗 a_dict = {'foo' : 'bar', 'bah' : 'baz'} b_dict = dict(a_dict, 'foo' : 'cat' ) desired result of b_dict = {'foo' : 'cat', 'bah' : 'baz'} 为什么不分两步进行: b_dict = dict(a_dict) b_dict["foo"] = "cat"

我试图复制一个dict,同时在执行复制时跳过其中一个键值对。我以为这样做是可能的,但这不起作用。有办法做到这一点吗

a_dict = {'foo' : 'bar', 'bah' : 'baz'}
b_dict = dict(a_dict, 'foo' : 'cat' )

desired result of b_dict = {'foo' : 'cat', 'bah' : 'baz'}

为什么不分两步进行:

b_dict = dict(a_dict)
b_dict["foo"] = "cat"
你也可以通过口述理解一步完成:

b_dict = {key: "cat" if key == "foo" else value for key, value in a_dict.iteritems()}

但是对于一本非常大的字典来说,它的效率就没有那么高了。

是的,使用
复制
是更好的方法

a_dict = {'foo' : 'bar', 'bah' : 'baz'}
b_dict = a_dict.copy()
b_dict.update({'foo' : 'cat'})

print(b_dict)   #  {'bah': 'baz', 'foo': 'cat'}
print(a_dict)   #  {'bah': 'baz', 'foo': 'bar'}
这将有助于:

b_dict = dict(list(a_dict.items()) + [('foo', 'cat')])
有些人可能更喜欢这种变化:

b_dict = dict(list(a_dict.items()) + list(dict(foo='cat').items()))


是的,我应该补充一点,我目前正在分两步进行,但我认为python在复制操作期间有一种简单的方法。感谢您的听写理解答案。
b_dict = dict(a_dict, foo='cat')
b_dict = dict(a_dict, **{'foo': 'cat'})