簡體   English   中英

AttributeError:'set'對象沒有屬性'items'

[英]AttributeError: 'set' object has no attribute 'items'

我是python的新手,並且在我去的時候一直在努力教自己(不是這個深入python的最好的方法,但是為了時間的緣故我也需要)。 我導入的模塊是Tkinter和csv。 如果您有任何疑問,請告訴我。

為了簡潔起見,我不打算在此處發布我的整個代碼,但是我將包含整個錯誤並指出錯誤適用的行。 下面的所有內容都在名為MainApp的類中。

def SubmitEdit(self):
    self.key=""
    self.val=""
    new_rows = []
    self.changes = {self.key:self.val}
    with open("info.csv",'rb') as f:
        reader = csv.reader(f):
        for row in reader:
            new_row = row
            for field in row:
                if field == "NAME":
                    print "groovy"
            for (self.key,self.val) in self.changes.items():
                new_row = [ x.replace(self.key,self.val) for x in new_row]
            new_rows.append(new_row)
     with open("info.csv","wb") as f:
         writer = csv.writer(f):
         writer.writerows(new_rows)

我分別編寫了這個代碼以確保它在將它放入程序之前工作並且它工作得很好,但是當我把它放在類中並做出更改時(我想)我需要對代碼/變量行做出來沒用。 所以這讓我相信我只是糾正錯誤的東西。

這是錯誤:

Exception in Tkinter callback
Traceback (most recent call last):
    File "C:\Python27\lib\lib-tk\Tkinter.py",line 1536, in__call__
        return self.func(*args)
    File "C:\Python27\draft.py", line 328, in SubmitEdit
        for (self.key,self,val) in self.changes:
AttributeError: 'set' object has no attribute 'items'

第328行引用self.changes.items()中的行:“或(self.key,self.val):”

我已經改變了(我覺得)“自我”的存在與否。 對於所有變量,但我無法讓它工作。

編輯:我改變代碼看起來像這樣:

def SubmitEdit(self):
    new_rows = []
    self.changes = {"MTMA",123}
    with open("info.csv",'rb') as f:
        reader = csv.reader(f):
        for row in reader:
            new_row = row
            for field in row:
                if field == "NAME":
                    print "groovy"
            for (key,val) in self.changes.items():
                new_row = [ x.replace(key,val) for x in new_row]
            new_rows.append(new_row)
     with open("info.csv","wb") as f:
         writer = csv.writer(f):
         writer.writerows(new_rows)

根據評論,但仍然得到完全相同的錯誤。

從最新更新的代碼中可以看到 -

self.changes = {"MTMA",123}

當您如上所述定義self.changes時,實際上是在定義一個集合,而不是字典,因為您使用','(逗號)而不是冒號,我很確定在您的實際代碼中您使用的是逗號本身,而不是冒號。

要定義一個字典,其中“MTMA”為鍵,123為值,請在它們之間使用冒號,示例 -

self.changes = {"MTMA":123}

在您的實際代碼中也做類似的事情。

如果您想要的是一個空字典,請將其定義為 -

self.changes = {}

暫無
暫無

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

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