Skip to content Skip to sidebar Skip to footer

Find All Items With Maximum Value Produced By An Iterator

I want to get all the maximum values from an iterator: def max_val(iterator, key=None): # ??? it = (i for i in range(4)) assert max_val(it, key=lambda i: i%2) == [1, 3] Note: th

Solution 1:

def max_val(iterator, key=None):
    try:
        ret = [iterator.next()]
    except StopIteration:
        return []
    for val initerator:
        ifkey(val) < key(ret[0]):
            continue
        elif key(val) == key(ret[0]):
            ret.append(val)
        else:
            ret = [val]
    return ret

One pass, passes your assertion.

It just keeps the best set it's found until it finds one better, then starts over.

Post a Comment for "Find All Items With Maximum Value Produced By An Iterator"