diff --git a/sqlglot/expressions.py b/sqlglot/expressions.py
index 7a8fef4e..21269329 100644
--- a/sqlglot/expressions.py
+++ b/sqlglot/expressions.py
@@ -621,7 +621,7 @@ class Expression(metaclass=_Expression):
             return expression
 
         key = self.arg_key
-        value = parent.args[key]
+        value = parent.args.get(key)
 
         if isinstance(value, list):
             index = self.index
@@ -639,7 +639,7 @@ class Expression(metaclass=_Expression):
                 else:
                     value[index] = expression
                     parent._set_parent(key, expression, index=index)
-        else:
+        elif value is not None:
             if expression is None:
                 parent.args.pop(key)
             else:

diff --git a/tests/test_optimizer.py b/tests/test_optimizer.py
index 71c65fae..984ec22b 100644
--- a/tests/test_optimizer.py
+++ b/tests/test_optimizer.py
@@ -342,6 +342,9 @@ class TestOptimizer(unittest.TestCase):
     def test_simplify(self):
         self.check_file("simplify", simplify, set_dialect=True)
 
+        expression = parse_one("SELECT a, c, b FROM table1 WHERE 1 = 1")
+        self.assertEqual(simplify(simplify(expression.find(exp.Where))).sql(), "WHERE TRUE")
+
         expression = parse_one("TRUE AND TRUE AND TRUE")
         self.assertEqual(exp.true(), optimizer.simplify.simplify(expression))
         self.assertEqual(exp.true(), optimizer.simplify.simplify(expression.this))

running simplify multiple times fails
**Fully reproducible code snippet**
Please include a fully reproducible code snippet or the input sql, dialect, and expected output.

```
>>> from sqlglot.optimizer.scope import exp
>>> from sqlglot.optimizer.simplify import simplify                                                                                 
>>> from sqlglot import parse_one
>>> ast=parse_one("SELECT a,c,b from table1 where 1 = 1;")
>>> w = ast.find(exp.Where)
>>> w2 = simplify(w)
>>> w2 = simplify(w)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lib/python3.9/site-packages/sqlglot/optimizer/simplify.py", line 109, in simplify
    expression = while_changing(expression, _simplify)
  File "lib/python3.9/site-packages/sqlglot/helper.py", line 211, in while_changing
    expression = func(expression)
  File "lib/python3.9/site-packages/sqlglot/optimizer/simplify.py", line 106, in _simplify
    expression.replace(node)
  File "lib/python3.9/site-packages/sqlglot/expressions.py", line 624, in replace
    value = parent.args[key]
KeyError: 'where'
>>> 
```

in my code i run simplify multiple times as I reduce some elements of a query. in this case, elements in the where clause.

as you see in the sample code, first time works fine but then the where clause was removed and the code fails. 
This used to work before, so I guess some check that they key exists has been removed.

tests/test_optimizer.py::TestOptimizer::test_simplify
tests/test_optimizer.py::TestOptimizer::test_aggfunc_annotation tests/test_optimizer.py::TestOptimizer::test_binary_annotation tests/test_optimizer.py::TestOptimizer::test_boolean_type_annotation tests/test_optimizer.py::TestOptimizer::test_bracket_annotation tests/test_optimizer.py::TestOptimizer::test_cache_annotation tests/test_optimizer.py::TestOptimizer::test_canonicalize tests/test_optimizer.py::TestOptimizer::test_cast_type_annotation tests/test_optimizer.py::TestOptimizer::test_concat_annotation tests/test_optimizer.py::TestOptimizer::test_cte_column_annotation tests/test_optimizer.py::TestOptimizer::test_derived_tables_column_annotation tests/test_optimizer.py::TestOptimizer::test_eliminate_ctes tests/test_optimizer.py::TestOptimizer::test_eliminate_joins tests/test_optimizer.py::TestOptimizer::test_eliminate_subqueries tests/test_optimizer.py::TestOptimizer::test_expand_alias_refs tests/test_optimizer.py::TestOptimizer::test_file_schema tests/test_optimizer.py::TestOptimizer::test_function_annotation tests/test_optimizer.py::TestOptimizer::test_interval_math_annotation tests/test_optimizer.py::TestOptimizer::test_isolate_table_selects tests/test_optimizer.py::TestOptimizer::test_lateral_annotation tests/test_optimizer.py::TestOptimizer::test_literal_type_annotation tests/test_optimizer.py::TestOptimizer::test_nested_type_annotation tests/test_optimizer.py::TestOptimizer::test_no_pseudocolumn_expansion tests/test_optimizer.py::TestOptimizer::test_normalize tests/test_optimizer.py::TestOptimizer::test_normalize_identifiers tests/test_optimizer.py::TestOptimizer::test_null_annotation tests/test_optimizer.py::TestOptimizer::test_nullable_annotation tests/test_optimizer.py::TestOptimizer::test_optimize tests/test_optimizer.py::TestOptimizer::test_optimize_joins tests/test_optimizer.py::TestOptimizer::test_predicate_annotation tests/test_optimizer.py::TestOptimizer::test_pushdown_cte_alias_columns tests/test_optimizer.py::TestOptimizer::test_pushdown_predicates tests/test_optimizer.py::TestOptimizer::test_pushdown_projection tests/test_optimizer.py::TestOptimizer::test_qualify_columns tests/test_optimizer.py::TestOptimizer::test_qualify_columns__invalid tests/test_optimizer.py::TestOptimizer::test_qualify_columns__with_invisible tests/test_optimizer.py::TestOptimizer::test_qualify_tables tests/test_optimizer.py::TestOptimizer::test_quote_identifiers tests/test_optimizer.py::TestOptimizer::test_quotes tests/test_optimizer.py::TestOptimizer::test_recursive_cte tests/test_optimizer.py::TestOptimizer::test_root_subquery_annotation tests/test_optimizer.py::TestOptimizer::test_schema_with_spaces tests/test_optimizer.py::TestOptimizer::test_scope tests/test_optimizer.py::TestOptimizer::test_scope_warning tests/test_optimizer.py::TestOptimizer::test_semistructured tests/test_optimizer.py::TestOptimizer::test_struct_type_annotation tests/test_optimizer.py::TestOptimizer::test_tpcds tests/test_optimizer.py::TestOptimizer::test_tpch tests/test_optimizer.py::TestOptimizer::test_type_annotation_cache tests/test_optimizer.py::TestOptimizer::test_typeddiv_annotation tests/test_optimizer.py::TestOptimizer::test_unknown_annotation tests/test_optimizer.py::TestOptimizer::test_unnest_annotation tests/test_optimizer.py::TestOptimizer::test_unnest_subqueries tests/test_optimizer.py::TestOptimizer::test_user_defined_type_annotation