Посмотрел программу. Вы просто изменяли срез в локальной структуре, которая совсем не указатель. Срез тоже не указатель, но содержит указатель на массив, но не на длину. Нужно было вернуть локальное значение обратно в словарь. Например, добавлением в конец else ветки кода:## Код:
```
countries[row.CCode] = cInfo
```

В любом языке, где существуют структуры вне динамической памяти было бы так же, и срезы тут ни при чём.