У меня есть 2 списка:
ListA { 'A', 'B', 'C' } //ListA is DictA.Keys
ListB { 'B', 'X', 'Y' } //ListB is DictB.Keys
Если я сделаю ListA.Except(ListB)
, я получу возвращенный ExceptIterator, который позволит мне перебирать ListA для любого элемента, которого нет в ListB. Проблема в том, что его реализация состоит в том, чтобы просто использовать ListA (по какой-то причине я думал, что это создаст новую коллекцию элементов, которые являются разницей). Хорошо, но я пришел к выводу, что он все еще использует ListA в качестве источника, но просто использует специальный тип итератора. Поэтому, конечно, когда я удаляю элемент из ListA, он жалуется, что коллекция была изменена.
Я могу придумать пару способов сделать то, что я хочу, во-первых, это скопировать ListA и сделать исключение на копии. Второе - просто сделать цикл while. Мне просто интересно, что является лучшим решением этой проблемы, и что следует стандартным рекомендациям.
Если я пойду не так, я бы хотел это знать. Моя ключевая цель - удалить все данные из DictA, которых нет в DictB, используя ключи в качестве сравнения.