From ea37316a852dd5ed06b13ad8e527e78f969d495f Mon Sep 17 00:00:00 2001 From: yashkumarjha12 <72943344+yashkumarjha12@users.noreply.github.com> Date: Thu, 6 Oct 2022 11:34:33 +0530 Subject: [PATCH] Create Time_Based_key-value_pairs.py --- Python/Time_Based_key-value_pairs.py | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Python/Time_Based_key-value_pairs.py diff --git a/Python/Time_Based_key-value_pairs.py b/Python/Time_Based_key-value_pairs.py new file mode 100644 index 0000000..51186ee --- /dev/null +++ b/Python/Time_Based_key-value_pairs.py @@ -0,0 +1,45 @@ +#Leetcode +# 981. Time Based Key-Value Store + +# Design a time-based key-value data structure that can store multiple values for the same key at different time stamps and retrieve the key's value at a certain timestamp. + +# Implement the TimeMap class: + +# TimeMap() Initializes the object of the data structure. +# void set(String key, String value, int timestamp) Stores the key key with the value value at the given time timestamp. +# String get(String key, int timestamp) Returns a value such that set was called previously, with timestamp_prev <= timestamp. If there are multiple such values, it returns the value associated with the largest timestamp_prev. If there are no values, it returns "". + + +# Example 1: + +# Input +# ["TimeMap", "set", "get", "get", "set", "get", "get"] +# [[], ["foo", "bar", 1], ["foo", 1], ["foo", 3], ["foo", "bar2", 4], ["foo", 4], ["foo", 5]] +# Output +# [null, null, "bar", "bar", null, "bar2", "bar2"] + +# Explanation +# TimeMap timeMap = new TimeMap(); +# timeMap.set("foo", "bar", 1); // store the key "foo" and value "bar" along with timestamp = 1. +# timeMap.get("foo", 1); // return "bar" +# timeMap.get("foo", 3); // return "bar", since there is no value corresponding to foo at timestamp 3 and timestamp 2, then the only value is at timestamp 1 is "bar". +# timeMap.set("foo", "bar2", 4); // store the key "foo" and value "bar2" along with timestamp = 4. +# timeMap.get("foo", 4); // return "bar2" +# timeMap.get("foo", 5); // return "bar2" + +class TimeMap: + + def __init__(self): + self.map_dict = defaultdict(dict) + + + def set(self, key: str, value: str, timestamp: int) -> None: + self.map_dict[key][timestamp]=value + + + def get(self, key: str, timestamp: int) -> str: + for i in range(timestamp, -1, -1): + if i in self.map_dict[key]: + return self.map_dict[key][i] + return "" +