python - 给定键值对,按字母顺序对输出进行排序并递增值

标签 python

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/

相关文章:

python - 从 url 提供服务的脚本,用于匹配正则表达式的请求

Python json,不必要的斜线

python - concurrent.futures 与 Python 中的多处理相比有哪些优势?

python - 为什么即使批量大小为 1 也会出现内存分配错误?

Python IOError 无法分配内存,尽管有很多

python - 在大文本文件python上寻找

python - Python 中 ISO 8601 的日期时间

python - 脚本完成后 python 垃圾收集时出现奇怪的线程错误

python - Pandas shift - 如何保留最后一行?

python - 将 URL 中的 JSON 数据解析到 MySQL