对于每个 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