Используйте это:
if a in ["rectangle" ,"Rectangle" ,"Rec" ,"rec"]:
То же самое для треугольника.
Это происходит потому, что в python
if a == 'x' or 'b' or 'c' or 'd'
не совпадает с
if (a =='x') or (a =='b') or (a == 'c') or ( a == 'd')
Единственный способ сделать это - удалить и снова добавить элемент словаря
Почему? Это потому, что словарь работает над процессом, называемым цепочкой и сегментами (он похож на хеш-таблицу с другой стратегией разрешения коллизий)
Когда элемент добавляется в словарь, он добавляется в корзину, к которой привязывается его ключ, и, если там уже есть экземпляр, он добавляется в цепочечный список. Если вам нужно сменить ключ, он должен будет пройти через процесс определения, где он принадлежит. Таким образом, самое простое и разумное решение - просто удалить и повторно добавить элемент
Решение
var data = SomeFunkyDictionary[key];
SomeFunkyDictionary.Remove(key);
SomeFunkyDictionary.Add(newKey,data);
Или сделать свой метод расширения
[ 111]Использование
SomeFunkyDictionary.ReplaceKey(oldKye,newKey);
Примечание : добавление и удаление из словаря влечет за собой штраф, если вы не не нужны быстрые поиски, может быть более подходящим вообще не использовать словарь или использовать какую-то другую стратегию.