两个字典相加,相同的key保留

dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
要求写一段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保留,如果是字符串就拼接,如上示例得到结果为:
dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}

以下这样写,比较简洁:

dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}
dct = dicta.copy()
for k,v in dictb.items():
    dct[k] = dct.get(k,0 if isinstance(v,int) else '')+v
print(dct)
dicta = {"a":1,"b":2,"c":3,"d":4,"k":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}

d = {}
for ka in list(dicta) + list(dictb):
    if isinstance(dicta.get(ka), int) or isinstance(dictb.get(ka), int):
        s = 0
    elif isinstance(dicta.get(ka),str) or isinstance(dictb.get(ka),str):
        s = ''
    d[ka] = dicta.get(ka, s) + dictb.get(ka, s)
print(d)

dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}

res = {}
for i, j in list(dicta.items())+list(dictb.items()):
    if res.get(i):
        res[i]+=j
    else:
        res[i]=j
print(res)
{'a': 1, 'b': 5, 'c': 3, 'd': 9, 'f': 'hello', 'e': 7, 'm': 9, 'k': 'world'}

dicta = {"a": 1, "b": 2, "c": 3, "d": 4, "f": "hello"}
dictb = {"b": 3, "d": 5, "e": 7, "m": 9, "k": "world"}

dictc = {}
for key, val in list(dicta.items()) + list(dictb.items()):
    dictc[key] = dictc[key] + val if dictc.get(key) is not None else val
print("dictc = {}".format(dictc))

结果:

img

如果觉得答案对你有帮助,请点击下采纳,谢谢~