Python 将 dict 对象视为 _csv.reader



我写了一个python程序将一个csv文件转换为我自己的类列表,这里是代码

class node:
    def __init__(self):
        self.cst_code = 0
        self.detail={};
    def setdata(self,CST_CODE,DATE,NUMBER):
        self.cst_code = CST_CODE
        self.detail[DATE]=NUMBER
    def add(self,DATE,NUMBER):
        if detail.get(DATE):
            self.detail[DATE]+=NUMBER
        else:
            self.detail[DATE]=NUMBER
    def sort(self):
        sorted(self.detail.items(),key = lambda e:e[0],reverse=True)
    def get_code(self):
        return self.cst_code

detail 是一个 dict 对象,但 python 将其视为 _csv.reader

    ---> 16         if detail.get(DATE):
         17             self.detail[DATE]+=NUMBER
         18         else:
AttributeError: '_csv.reader' object has no attribute 'get'

有没有人遇到同样的问题并得到解决方案?

您可能已经在方法 node.add() 的外部作用域中创建了一个名为 detail 的变量。由于您引用的是 detail ,并且方法的作用域中没有名为 detail 的对象,因此将检查外部作用域中是否有具有该名称的对象。您可能在方法外部定义了csv.reader的实例。

看起来你的方法实际上应该指的是self.detail,而不是detail。要访问存储在实例中的字典,而不是外部作用域,请执行以下操作:

def add(self,DATE,NUMBER):
    if self.detail.get(DATE):        # N.B. use self
        self.detail[DATE]+=NUMBER
    else:
        self.detail[DATE]=NUMBER

另请注意,方法 node.sort() 缺少return

最新更新