lihuanshuai
4/13/2017 - 4:44 AM

对于每个 key,仅选取最小(或最大)值作为 value

对于每个 key,仅选取最小(或最大)值作为 value

def gen_reduced_dict(iterable, key=None, reverse=False):
    key = (lambda x: x) if key is None else key
    d = {}
    for k, v in iterable:
        if k not in d:
            d[k] = v
        pv = d[k]
        cmp_ = (lambda x, y: x > y) if reverse else (lambda x, y: x < y)
        if cmp_(key(v), key(pv)):
            d[k] = v
    return d