Found a workaround: convert dict to string, and, pass string from matlab to python. For people who want to know:
$ cat doThing.m
function kv = doThing()
k = strings(2, 1);
v = zeros(2, 1);
for i = 1:2
v(i) = i;
k(i) = ['key', num2str(i)];
end
dict = containers.Map(k, v);
kv = [keys(dict); values(dict)];
kv = sprintf('%s=%.1f ', kv{:});
end
$ cat doThing.py
import matlab.engine
eng = matlab.engine.start_matlab()
kv = eng.doThing()
for token in kv.split():
k = token.split('=')[0]
v = token.split('=')[1]
print(k, v)
$ python doThing.py
key1 1.0
key2 2.0
