981. Time Based Key-Value Store

class TimeMap(object):

    def __init__(self):
        self.map = collections.defaultdict(list)

    def set(self, key, value, timestamp):
        self.map[key].append([value, timestamp])

    def get(self, key, timestamp):

        values = self.map.get(key, [])

        l, r = 0, len(values) - 1
        res = ""
        while l <= r:
            mid = (l + r) // 2

            if values[mid][1] <= timestamp:
                res = values[mid][0]
                l = mid + 1
            else:
                r = mid - 1 

        return res