x = { 'apple': 1, 'banana': 2 }
y = { 'banana': 10, 'pear': 11 }
需要把两个字典合并,最后输出结果是:
{ 'apple': 1, 'banana': 12, 'pear': 11 }
x = { 'apple': 1, 'banana': 2 }
y = { 'banana': 10, 'pear': 11 }
需要把两个字典合并,最后输出结果是:
{ 'apple': 1, 'banana': 12, 'pear': 11 }
上面两位的答案都是对的,我做了一下性能对比,你可以看下。
from collections import Counter
x = { 'apple': 1, 'banana': 2 }
y = { 'banana': 10, 'pear': 11 }
def f():
i = 0
while 1:
if i == 10000:
break
for k, v in y.items():
if k in x.keys():
x[k] += v
else:
x[k] = v
i += 1
def g():
i = 0
while 1:
if i == 10000:
break
X,Y = Counter(x), Counter(y)
z = dict(X+Y)
i += 1
if __name__ == "__main__":
import timeit
tf = timeit.timeit(f, "from __main__ import f", number=10)
tg = timeit.timeit(g, "from __main__ import g", number=10)
print "f: %s\ng: %s" % (tf, tg)
输出:
f: 0.138742800623
g: 1.37559758279
我的建议是,简单的功能自己手写就好。
最后的结果中 banana
是 12
而不是 2
吧
>>> x = { 'apple': 1, 'banana': 2 }
>>> y = { 'banana': 10, 'pear': 11 }
>>> for k, v in y.items():
... if k in x.keys():
... x[k] += v
... else:
... x[k] = v
...
>>> x
{'pear': 11, 'apple': 1, 'banana': 12}
>>>
4 回答4.3k 阅读✓ 已解决
4 回答3.7k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.7k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
利用collections.Counter可轻松办到
本人的写法: