2013-10-23 58 views
-1

我正在创建一个做一些简单的图论计算的类,我在代码的底部创建了一个字典,我想知道如何在类中使用字典?Python:创建使用字典的类

我想尝试这样的事情,

k = Graph(d.keys()) 

,但它没有工作,它给了我这个错误

TypeError: __init__() takes exactly 3 arguments (2 given) 

没有任何人有一个建议吗?

class Graph: 
    """docstring""" 
    def __init__(self, node, degree): 
     self.node = node 
     self.degree = degree 

    def Add(self): 
     return sum(node) 


if __name__ == '__main__': 
    infile = raw_input("Enter File Name: ") 
    myfile = open(infile, 'r') 
    d = {} 
    with myfile as f: 
     next(f) 
     for line in f: 
      k,v = line.split() 
      d[int(k)] = int(v) 
      next(f) 

    k = d.keys() 
    v = d.values() 
+0

你想为每一行创建一个'Graph()'对象吗?当您将'd.keys()'传递给'Graph()'构造函数时,您期望发生什么并不清楚。 –

+1

读取文件时包含什么样的数据?您需要向我们提供更多具体信息,了解您希望看到的输入内容和输出内容。 –

+1

它不应该是'Add'方法中的'return sum(self.node)'吗? – iCodez

回答

0

这并不完全清楚自己在做什么在这里,但让我来猜:

你定义了一个需要2个参数的构造函数(我们不计算自己):

def __init__(self, node, degree): 

..你叫1个参数的图形构造:

k = Graph(d.keys()) 

我猜你想

k = Graph(k, v) 

...但是我们真的需要看到你所创建的图形对象。

+0

我很抱歉没有具体说明,但我想将“k”表示为节点,将“v”表示为度。 数据类型是一个整数列表。 – user87566

0

您想使用**操作才能解词典到关键字参数:

k = Graph(**d) 
+0

TypeError:__init __()关键字必须是字符串 这就是我试过时返回的结果,我有一个整数列表。 – user87566

+0

你说你有一本字典,而不是一份清单。 – erikprice