【发布时间】:2021-02-09 00:22:13
【问题描述】:
我对 Python 非常陌生,并且坚持完成我正在学习的在线课程的任务。我对 Python 的了解非常有限。
这里是任务:''' 编写一个脚本,包含以下两个 字典并通过组合公共键创建一个新字典 并将重复键的值加在一起。请使用 For 循环 遍历这些字典以完成此任务。
输入/输出示例:
dict_1 = {"a": 1, "b": 2, "c": 3} dict_2 = {"a": 2, "c": 4, "d": 2}
结果 = {"a": 3, "b": 2, "c": 7, "d": 2}
'''
dict_2 = {"a": 2, "c": 4 , "d": 2}
dict_3 = {}
for x, y in dict_1.items():
for z, h in dict_2.items():
if x == z:
dict_3[x] = (y + h)
else:
dict_3[x] = (y)
dict_3[z] = (h)
print(dict_3)
错误的输出:
{'a': 2, 'c': 3, 'd': 2, 'b': 2}
一切都在工作,直到“其他”条件。 我试图只隔离两个字典的唯一出现,但结果实际上覆盖了我之前在条件下添加到字典中的内容。 你知道一种方法来隔离每个字典的单一事件吗?我想您可以计算它们并添加“如果计数为 1”条件,但我不能碰巧做到这一点。谢谢!
【问题讨论】:
-
为什么不将所有 dict_1 项插入到 dict_3 中,然后简单地迭代 dict_2,测试每个键是否已经在 dict_3 中,然后根据需要添加/插入。它会更快更简单。
-
你的方法是错误的。你不应该以 O(n*m) 的复杂度来做,在 O(n+m) 的情况下做这件事就足够简单了。如果不计算 dict_2 到 dict_3 的复制,那么它甚至会是 O(m)。
标签: python dictionary merge