/
MyDictV1.5.py
66 lines (65 loc) · 2.05 KB
/
MyDictV1.5.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/python
'''
@author: Suresh Nagulavancha
'''
from collections import OrderedDict
class IndexNotFoundError(Exception):
'''Index not available'''
class MyDict(OrderedDict):
def __init__(self):
super(MyDict, self).__init__()
def insert(self,key,value,index=None,akey=None,bkey=None):
tmp1=OrderedDict()
tmp2=OrderedDict()
if ((index is not None) and (isinstance(index, int))):
if index<len(self.keys()):
for i in self.iterkeys():
if self.indexofkey(i)<index:
tmp1[i]=self[i]
elif self.indexofkey(i)>=index:
tmp2[i]=self[i]
self.clear()
for i in tmp1.items():
self[i[0]]=i[1]
self[key]=value
for i in tmp2.items():
self[i[0]]=i[1]
return self
if index==len(self.keys()):
self[key]=value
if akey is not None:
if akey in self.iterkeys():
self.insert(key,value,index=self.indexofkey(akey)+1)
else:
raise KeyError
if bkey is not None:
if bkey in self.iterkeys():
self.insert(key, value, index=self.indexofkey(bkey))
else:
raise KeyError
def indexofkey(self,key):
count=0
for i in self.iterkeys():
if i==key:
return count
else:
count+=1
raise KeyError
def getKeyByIndex(self,index):
count=0
for i in self.iterkeys():
if count==index:
return i
else:
count+=1
raise IndexNotFoundError
def getValueByIndex(self,index):
count=0
for i in self.itervalues():
if count==index:
return i
else:
count+=1
raise IndexNotFoundError
def getSize(self):
return len(self.keys())