【问题标题】:Python: Creating classes that uses a dictionaryPython:创建使用字典的类
【发布时间】:2013-10-23 15:17:38
【问题描述】:

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

我想试试这样的,

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()

【问题讨论】:

  • 您想为每一行创建一个Graph() 对象吗?当您将 d.keys() 传递给 Graph() 构造函数时,您还不清楚您期望发生什么。
  • 读取时文件包含什么样的数据?您需要向我们详细说明输入是什么以及您希望看到什么输出。
  • 不应该是Add方法中的return sum(self.node)吗?
  • @MartijnPieters ,我是编程新手,所以我有点不知道自己在做什么,但我想要导入一长串键并将它们表示为“节点”。据我了解,如果我将它传递给“Graph() 构造函数”,我可以使用列表“k”并在类中对其进行操作。

标签: python class object dictionary


【解决方案1】:

不完全清楚你在这里做什么,但让我猜一下:

您定义了一个带有 2 个参数的构造函数(我们不计算自身):

def __init__(self, node, degree):

.. 你用 1 个参数调用了图形构造函数:

k = Graph(d.keys())

我猜你想要

k = Graph(k, v)

...但我们确实需要查看您在哪里创建 Graph 对象。

【讨论】:

  • 很抱歉没有具体说明,但我想将“k”表示为节点,将“v”表示为度数。数据类型是整数列表。
【解决方案2】:

您想使用** 运算符将字典解压缩为关键字参数:

k = Graph(**d)

【讨论】:

  • TypeError: __init__() 关键字必须是字符串 这是我尝试时返回的内容,我有一个整数列表。
  • 你说你有字典,而不是列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2018-05-18
  • 1970-01-01
  • 2018-04-07
  • 2016-01-08
  • 1970-01-01
相关资源
最近更新 更多