error de expresión regular en Python: paréntesis desequilibrado

Soy bastante nuevo en Python, así que tengo un diccionario con algunas claves y una cadena. Tengo que reemplazar la cadena si existe un patrón encontrado en el diccionario en la cadena. Tanto el diccionario como la cadena son muy grandes. Estoy usando una expresión regular para encontrar los patrones.

Todo funciona bien hasta que aparece una tecla como esta '- (' o este '(-)' en cuyo caso python da un error para paréntesis desequilibrados.

Así es como se ve el código que he escrito:

somedict={'-(':'value1','(-)':'value2'}
somedata='this is some data containing -( and (-)'
for key in somedict.iterkeys():
    somedata=re.sub(key, 'newvalue', somedata)

Aquí está el error que tengo en la consola.

Traceback (most recent call last):
  File "<console>", line 2, in <module>
  File "C:\Python27\lib\re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "C:\Python27\lib\re.py", line 244, in _compile
    raise error, v # invalid expression
error: unbalanced parenthesis

También lo he intentado de muchas maneras utilizando el compilador de expresiones regulares y busqué mucho, pero no encontré nada que resolviera el problema. Cualquier ayuda es apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta