Skip to content

Instantly share code, notes, and snippets.

@cesarkawakami
Last active December 24, 2015 20:59
Show Gist options
  • Save cesarkawakami/6862456 to your computer and use it in GitHub Desktop.
Save cesarkawakami/6862456 to your computer and use it in GitHub Desktop.
import collections
class DumbMap(collections.MutableMapping):
def __init__(self):
elements = []
def __getitem__(self, key):
for k, v in self.elements.iteritems():
if k == key:
return v
else:
raise KeyError(key)
def __setitem__(self, key, value):
if key in self:
del self[key]
self.elements.append((key, value))
def __delitem__(self, key):
if key not in self:
raise KeyError(key)
self.elements = [(k, v) for (k, v) in self.elements if k != key]
def __iter__(self):
return iter(k for k, v in self.elements)
def __len__(self):
return len(self.elements)
def weird_merge(a, b):
rv = list(a)
a_elements = DumbMap()
for x in a:
a_elements[x] = a_elements.get(x, 0) + 1
for x in b:
if a_elements.get(x, 0) > 0:
a_elements[x] -= 1
continue
rv.append(x)
return rv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment