code: def iterkeys(self):
          patterns = self.patterns
          replace = self.replace
          seen = set()
          for key in six.iterkeys(self.base):
              for pattern in patterns:
                  m = pattern.match(key)
                  if m:
                      ret = m.group('key') if replace else m.group()
                      if ret not in seen:
                          seen.add(ret)
                          yield ret
                      break
          for key in DictMethods.iterkeys(self):
              if key not in seen:
                  yield key