'''
解题思路:
1、设计key, value, res三个list
2、插入操作:分key中已有和没有2种情况,已有时删除原值。在0位插入新key和value,长度大于k截断
3、读取操作:分key中已有和没有2种情况,没有时返回-1,有时返回value值。删除原位置,在0位插入key和value
'''
#
# lru design
# @param operators int整型二维数组 the ops
# @param k int整型 the k
# @return int整型一维数组
#
class Solution:
    def LRU(self , operators , k ):
        # write code here
        key = []
        value = []
        res = []
        for op in operators:
            if op[0]==1:
                if op[1] in key:
                    index = key.index(op[1])   
                    key.pop(index)
                    value.pop(index)
                key.insert(0,op[1])
                value.insert(0,op[2])
                if len(key)>k:
                    key = key[:k]
                    value = value[:k]
            if op[0]==2:
                if op[1] not in key:
                    res.append(-1)
                else:
                    index = key.index(op[1])
                    t = value[index]
                    res.append(t)
                    key.pop(index)
                    value.pop(index)
                    key.insert(0,op[1])
                    value.insert(0,t)
        #print(res)
        return res

operators =[[1,1,1],[1,2,2],[1,3,2],[2,1],[1,4,4],[2,2]]
k = 3
Solution().LRU(operators,k)