Which data structure should we use here?
Implement an LRU cache that processes put and get operations. Choose a data structure that supports constant-time lookup, insertion, updates, and least-recently-used eviction.
lru_cache(operations, capacity) receives a list of operations and returns the values produced by each get. A missing key returns -1; every successful get marks the key as most recently used. Each operation is either ["get", key] or ["put", key, value].
def lru_cache(operations, capacity):