我正在努力解决以下问题:例如,给定一个以numpy数组作为值的字典a={'xarray':np.ones((2,2))},我想用字典关键字的名称将数组保存到npz文件中:np.savez('test.npz',a.keys()=a['xarray'])错误是在a.keys:SyntaxError: keyword can't be an expression.我需要以某种方式将密钥转换为表达式。我尝试使用eval函数,但未成功。谢谢,米哈伊尔编辑:为了澄清问题,我希望结果等同于以下内容:np.savez('test.npz', xarray = np.ones((2,2)))我的数组的名称在字典的第一个键中指定,而数组本身在第一个值:中a={'xarray':np.ones((2,2))}。尝试:np.savez('test.npz',format(list(a.keys())[0])=list(a.values())[0])再次返回SyntaxError: keyword can't be an expression
1 回答

潇潇雨雨
TA贡献1833条经验 获得超4个赞
如果我对您的理解正确,则应该尝试执行以下操作:np.savez('{}.npz'.format(list(a.keys())[0]))。这会将文件名设置为给定字典中的第一个键。
由于尝试a.keys()将其值设置为a['xarray']表达式,所以您得到的错误是正确的。而且,据我所知,python将不允许这样做。
编辑: 我只是在讲完np.savez函数的功能之后,我误会了你。因此,正确的做法(如果现在正确的话)是:
kwargs = {key: a[key] for key in a.keys()}
np.savez('test.npz', **kwargs)
请尝试说出这是否是您想要的:)
编辑2: 仅具有第一个键:
kwargs = {key: a[key] for key in [list(a.keys())[0]]}
np.savez('test.npz', **kwargs)
添加回答
举报
0/150
提交
取消