问题遇到的现象和发生背景
我在改写MatLab代码为Python代码过程中遇到setfield(S, field, value)难以转化的问题。MatLab中的structure array field我用的dict代替。
问题相关代码
new = argv{argc+1};
f = fieldnames(new);
opt = setfield(opt.f{1},getfield(new,f{1}));
上述matlab代码我是这么替换的:
new = {}
new = argv[argc]
f = list(new.keys())
opt.update(f[0]=new.get(f[0]))
运行结果及报错内容
opt.update(f[0] = new.get(f[0]))
^
SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
我的解答思路和尝试过的方法
改成==显然没有用处。我也试过用opt[f[0]]=new.get(f[0])),也是同样的报错。然后试过用另一个变量替换它。结果是直接在原dict基础上增加了一个新的。以下是在IDELE里尝试的例子:
listK=list(new.keys())
field=listK[4]
new.update(field=new.get(listK[0]))
new
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'field': 1}
我想要达到的结果
求问各位怎么能够实现原有的opt.update(f[0]=new.get(f[0]))的效果。感谢!