使用python覆盖键值对时浅复制dict

时间:2014-11-17 01:47:19

标签: python dictionary copy key-value

我正在尝试复制一个字典,同时在执行复制时骑一个键值对。我认为这样的事情是可能的,但这不起作用。有没有办法做到这一点?

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

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

4 个答案:

答案 0 :(得分:1)

为什么不分两步完成:

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

但它对于一本非常大的词典来说不会有效率。

答案 1 :(得分:0)

是的,使用copy是更好的方式。

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

答案 2 :(得分:0)

这将起作用:

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

有些人可能更喜欢这种变化:

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

答案 3 :(得分:0)

pkg install git

apt update && apt upgrade -y