dict1 = {'a': 10, 'b': 8, 'c':5}
dict2 = {'d': 6, 'c': 4, 'a':20}
给定两个字典,我想要一个输出。
output = {'a':30, 'b':8, 'c':9, 'd':6}
这就是我到目前为止所做的,不太确定下一步要做什么。 我正在寻找一种在时间/空间复杂性方面有效的解决方案。
def merge_dict(dict1, dict2):
merged_dictionaries = {**dict1, **dict2}
return merged_dictionaries
dict1 = {'a': 10, 'b': 8, 'c':5}
dict2 = {'d': 6, 'c': 4, 'a':20}
merge_dictionaries = merge_dict (dict1, dict2)
sorted_dictionary = sorted(merge_dictionaries)
最佳答案
如果值是数字,您可以使用计数器:
from collections import Counter
def merge_dicts(*dicts):
return dict(sum(map(Counter, dicts), Counter()))
dict1 = merge_dicts(dict1, dict2)
dict1
# {'a': 30, 'b': 8, 'c': 9, 'd': 6}
对于只有两个字典来说这可能有点过多,所以另一个选择是:
for k, v in dict2.items():
dict1[k] = dict1.setdefault(k, 0) + v
dict1
# {'a': 30, 'b': 8, 'c': 9, 'd': 6}
就地更新dict1
。
最后,如果你确实需要对结果进行排序(python3.7+),请使用
result = {k : dict1[k] for k in sorted(dict1)}
关于python - 给定键值对,按字母顺序对输出进行排序并递增值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292559/