How to set the limit for the key and value for the below program. I wrote one python function to add key and values. How to limit the number of keys = 3 and values = 4. Need to ignore the more than 3 keys and 4 values are added.
Is there any thing like below given in program
self.size_key = 3
and self.size_value = 4 or [[] for _ in range(5)]
sample code
class my_dict(dict):
def add(self, key, value):
#if len(value) < 4 and len(key) < 3:
self.setdefault(key, []).append(value)
def remove_key(self, key):
del self[key]
def remove_value(self, key, value):
if value in self[key]:
self[key].remove(value)
dict_obj = my_dict()
dict_obj.add('key1', 'value1')
dict_obj.add('key2', 'value9')
dict_obj.add('key1', 'value3')
print(dict_obj)
To do what you want, you would need to use an Ordered Dict. Because dicts do not keep an order outside of a list. It would be impossible to predict which key is getting deleted.
This solves your problem.
from collections import OrderedDict
class my_dict(OrderedDict):
def add(self, key, value):
self.check(key)
self.setdefault(key, []).append(value)
def check(self, key):
if len(self.keys()) == 3:
del self[next(iter(self))]
if len(self.get(key, [])) == 4:
del self[key][0]
dict_obj = my_dict()
dict_obj.add('key1', 'value1')
dict_obj.add('key2', 'value9')
dict_obj.add('key1', 'value3')
dict_obj.add('key1', 'value4')
dict_obj.add('key1', 'value5')
dict_obj.add('key1', 'value6')
dict_obj.add('key3', 'value6')
dict_obj.add('key4', 'value6')
print(dict_obj)