簡體   English   中英

如何更正以下錯誤“ AttributeError:'dict_keys' object has no attribute 'remove' '?

[英]How can I correct the follow error ' AttributeError: 'dict_keys' object has no attribute 'remove' '?

我試圖按照“ 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)

' AttributeError: 'dict_keys' 對象沒有屬性 'remove' '

似乎將keys.remove(key)更改為del keys[key]對他們有用。 (來自評論)


當您加載 matlab 文件和期望字典但找不到字典的代碼時,您會遇到此問題。

具體錯誤是'dict_keys' object has no attribute 'remove' 這就是我知道 python 沒有找到字典的方式。

你的代碼:

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)。 在 Python 中讀取 .mat 文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM