如何在python中合并并正确更新字典(值是列表)?
作者:互联网
假设我有两个字典,其中值是列表(或集合也很好,因为内容是唯一的).例如:
dic1 = {'math': ['algebra', 'trigonometry', 'geometry']}
dic2 = {'math': ['calculus'], 'science': ['physics']}
dic2.update(dic1)
我想要的输出是这样的:
{'math': ['algebra', 'trigonometry', 'geometry', 'calculus'], 'science': ['physics']}
但是我得到了:
{'math': ['algebra', 'trigonometry', 'geometry'], 'science': ['physics']}
本质上,我希望在合并两个字典时合并内容(我不想覆盖而是保留两个字典).有没有简单的方法可以做到这一点?注意:在我给出的这个示例中,只有两个字典.尽管我还没有编写代码,但我最终还是希望遍历几个字典,并在循环中执行合并/更新的过程,这在建议方法时可能会有所帮助.
解决方法:
这可以用一个简单的单线表达:
>>> {k: dic1.get(k, []) + dic2.get(k, []) for k in (set(dic1) | set(dic2))}
{'science': ['physics'], 'math': ['algebra', 'trigonometry', 'geometry', 'calculus']}
这结合了三种技术:
>两组的union组合了键并消除了重复项.
> dict.get()方法提供了缺失键的默认空白列表.
> dictionary comprehension构建新词典.
Python的核心工具箱通常为基本的基本数据操作问题提供了优雅的解决方案.我经常对这些工具结合在一起的效果感到惊讶.
这如何帮助:-)
标签:dictionary,inner-join,python,merge 来源: https://codeday.me/bug/20191111/2017727.html