您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

带有自定义合并功能的Python合并字典

带有自定义合并功能的Python合并字典

使用字典视图来实现这一点;该dict.viewkeys()结果就像一组,让你做的十字路口和对称的区别:

def merge(A, B, f):
    # Start with symmetric difference; keys either in A or B, but not both
    merged = {k: A.get(k, B.get(k)) for k in A.viewkeys() ^ B.viewkeys()}
    # Update with `f()` applied to the intersection
    merged.update({k: f(A[k], B[k]) for k in A.viewkeys() & B.viewkeys()})
    return merged

在Python 3中,该.viewkeys()方法重命名.keys(),取代了旧.keys()功能(在Python 2中会重现列表)。

上面的merge()方法是适用于任何给定的通用解决方f()

演示:

>>> def f(x, y):
...     return x * y
... 
>>> A = {1:1, 2:3}
>>> B = {7:3, 2:2}
>>> merge(A, B, f)
{1: 1, 2: 6, 7: 3}
>>> merge(A, B, lambda a, b: '{} merged with {}'.format(a, b))
{1: 1, 2: '3 merged with 2', 7: 3}
python 2022/1/1 18:36:47 有246人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶