python将dict对象视为_csv.reader

时间:2017-03-31 10:22:41

标签: python dictionary

我编写了一个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'

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

1 个答案:

答案 0 :(得分:0)

您可能在方法detail的外部范围内创建了一个名为node.add()的变量。因为您指的是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