import  collections
class Unsorted_Map(collections.MutableMapping):
    class _Item(object):
        def __init__(self , k , v):
            self._key= k
            self._value= v
        def __eq__(self, other):
            return self._key==other._key
        def __ne__(self, other):
            return not (self == other)
        def __It__(self , other):
                return self._key < other._key
        def __init__(self):
            self._table = []
        def __len__(self):
            return  len(self._table)
        def __iter__(self):
            for item in self._table:
                yield item._key
        def __getitem__(self, k):
            for item in self._table:
                if item._key == k:
                    return item._value
                raise keyError("key not found")
        def __setitem__(self, key, v):
            for item in self._table:
                if item._key == k:
                    item._value = v
                    return
            self._table.append(self._Item(k,v))
        def __delitem__(self, k):
            for i in range(len(self._table)):
                if self._table[i]._key == k:
                    self._table.pop(i)
                    return
            raise keyError("key not found")
from Unsorted_Map import Unsorted_Map
if __name__== '__main__':
    um = Unsorted_Map()
    print(len(um))
    print("="*30)
    um.__setitem__("class", "algorithm")
    um.__setitem__("building", "CTUT")
    um.__setitem__(7."saturday")
    um.__setitem__("a_list",[1,2,3,4])
    print(len(um))
    print("="*30)
    for key in um:
        print(key)
    print(str(key) +" : "+str(um.__getitem__(key)))
    print("="*30)
    um.__setitem__("class","algorithm and data structures")
    um.__setitem__("another_list", [6,7,8,9,"a","10"])
    for key in um:
        print(str(key)+" : "+str(um.__getitem__(key)))
    print("="30)
    print(um["class"]>um["building"])
    print(um[7]>um["class"])