Skip to content

Instantly share code, notes, and snippets.

@metacoma
Created October 16, 2013 11:14
Show Gist options
  • Save metacoma/7006171 to your computer and use it in GitHub Desktop.
Save metacoma/7006171 to your computer and use it in GitHub Desktop.
import collections
class TransformedDict(collections.MutableMapping):
def __init__(self, *args, **kwargs):
self.store = dict()
self.update(dict(*args, **kwargs)) # use the free update to set keys
def __getitem__(self, key):
return self.store[self.__keytransform__(key)]
def __setitem__(self, key, value):
self.store[self.__keytransform__(key)] = value
def __delitem__(self, key):
del self.store[self.__keytransform__(key)]
def __iter__(self):
return iter(self.store)
def __len__(self):
return len(self.store)
def __keytransform__(self, key):
return key
class NodesDict(TransformedDict):
def add(self, element):
return self.__setitem__(element, element)
def __keytransform__(self, key):
try:
# now uniq for hash is only hwaddr key
print 'hwaddr = ' + key['hwaddr']
return key['hwaddr']
except KeyError:
print "Error: hwaddr not in key"
raise()
compute1 = dict()
compute1['hwaddr'] = 'compute1_hwaddr'
compute2 = dict()
compute2['hwaddr'] = 'compute2_hwaddr'
compute3 = dict()
compute3['hwaddr'] = 'compute2_hwaddr' # duplicate hwaddr
nodes = NodesDict();
nodes.add(compute1)
nodes.add(compute2)
print nodes.__len__()
@akscram
Copy link

akscram commented Oct 16, 2013

Are you lost smth like that?

nodes.add(compute3)

@metacoma
Copy link
Author

yeah, right

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment