python-3.x 如何更正以下错误' AttributeError:“dict_keys”对象没有属性“remove”?

8yoxcaq7  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(185)

我试图遵循“https://github.com/EBjerrum/Deep-Chemometrics/blob/master/Deep_Chemometrics_with_data_augmentation.py.ipynb”的例子,但当执行代码的第一部分时,我立即得到错误。

#code
import scipy.io as sio
import numpy as np

def get_xY(filename, maxx=600):

#sio.whosmat(filename)

matcontents = sio.loadmat(filename)
keys = matcontents.keys()
for key in list(keys):
    if key[0] == '_':
        keys.remove(key)

keys.sort()

d = {}            
for key in keys:
    data = matcontents[key][0][0]
    if key[-1] == "Y":
        Ydata = data[5]
        d[key] = Ydata
    else:
        xdata = data[5][:,:maxx]
        d[key] = xdata
        d["axisscale"]= data[7][1][0][0][:maxx].astype(np.float)

return d

filename = 'Dataset/nir_shootout_2002.mat'
dataset = get_xY(filename)

字符串
'属性错误:“dict_keys”对象没有属性“remove”

qcbq4gxm

qcbq4gxm1#

似乎将keys.remove(key)改为del keys[key]对他们来说是有效的。(来自一条评论)
当你加载matlab文件时,你会遇到这个问题,而代码期望一个dict,而它没有找到一个dict。
具体错误为'dict_keys' object has no attribute 'remove'。所以我知道python不是在找一个dict。
密码:

matcontents = sio.loadmat(filename)
keys = matcontents.keys()

字符串
将其更改为:

matcontents = sio.loadmat(filename)
print('matcontents',type(matcontents),matcontents)
keys = matcontents.keys()
print('keys',type(keys),keys)


以确保按预期加载数据。
本页还提到了较新版本的matlab文件(7.3)必须以不同的方式导入。Read .mat files in Python

相关问题