Словарь: свойство или индексатор не могут быть назначены: оно только для чтения

Используйте это:

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')
0
задан Muhammad Shahid 19 January 2019 в 04:14
поделиться

1 ответ

Единственный способ сделать это - удалить и снова добавить элемент словаря

Почему? Это потому, что словарь работает над процессом, называемым цепочкой и сегментами (он похож на хеш-таблицу с другой стратегией разрешения коллизий)

enter image description here

Когда элемент добавляется в словарь, он добавляется в корзину, к которой привязывается его ключ, и, если там уже есть экземпляр, он добавляется в цепочечный список. Если вам нужно сменить ключ, он должен будет пройти через процесс определения, где он принадлежит. Таким образом, самое простое и разумное решение - просто удалить и повторно добавить элемент

Решение

var data = SomeFunkyDictionary[key];
SomeFunkyDictionary.Remove(key);
SomeFunkyDictionary.Add(newKey,data);

Или сделать свой метод расширения

[ 111]

Использование

SomeFunkyDictionary.ReplaceKey(oldKye,newKey);

Примечание : добавление и удаление из словаря влечет за собой штраф, если вы не не нужны быстрые поиски, может быть более подходящим вообще не использовать словарь или использовать какую-то другую стратегию.

0
ответ дан Michael Randall 19 January 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: