Python ::差异_by

在将提供的函数应用于两个列表的每个列表元素之后,返回两个列表之间的差。

set 通过 fn 对中的每个元素进行 创建 b,然后将列表理解与fn结合使用,以仅保留先前创建的值中未包含的值 set。

def difference_by(a, b, fn):
    b = set(map(fn, b))
    return [item for item in a if fn(item) not in b]
from math import floor
difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x']) # [ { x: 2 } ]