После прочтения строки из файла с разделителями табуляции и выполнения .split подсчитайте количество элементов, на которые он разбился?

Индексатор вернет копию значения. Внесение изменений в эту копию ничего не сделает со значением в словаре ... компилятор останавливает вас от написания багги-кода. Если вы хотите изменить значение в словаре, вам нужно будет использовать что-то вроде:

// Note: copying the contents to start with as you can't modify a collection
// while iterating over it
foreach (KeyValuePair<string, MapTile> pair in tilesData.ToList())
{
    MapTile tile = pair.Value;
    tile.bgFrame = tile.bgFrame >= tile.bgAnimation ? 0 : tile.bgFrame + 1;
    tilesData[pair.Key] = tile;
}

Обратите внимание, что это также , избегая выполнения нескольких поисков без пользы Причина, по которой выполнялся ваш оригинальный код.

Лично я настоятельно рекомендую против иметь сменяемую структуру, чтобы начать с вас ...

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

// If MapTile is a reference type...
// No need to copy anything this time; we're not changing the value in the
// dictionary, which is just a reference. Also, we don't care about the
// key this time.
foreach (MapTile tile in tilesData.Values)
{
    tile.bgFrame = tile.bgFrame >= tile.bgAnimation ? 0 : tile.bgFrame + 1;
}
0
задан GoodinSo 18 March 2019 в 15:40
поделиться

1 ответ

Как отметил @Fejs в комментарии, просто сделайте len(lstLine).

По split вы получаете lstLine как Python List, len(lstLine) подсчитывает количество элементов в списке.

0
ответ дан Yuan JI 18 March 2019 в 15:40
поделиться
Другие вопросы по тегам:

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