0

这里是初学者,我想知道这是否可能,或者这是否是解决问题的正确方法。

总的想法是有一个不同节点的图,其中每个节点可以是(如下例所示)一个人或一个位置,或其他东西。

我认为表示图形节点和关系的最佳方法是拥有一个集合字典,其中字典键是节点,它的值表示方向弧(key1 -> key1value1,key1 -> key1value2)。

所以我有一个名为 Person 的简单类:

class Person:
    def __init__(self, name):
        self.name = name

    def __eq__(self, other):
        return (self.name, ) == (other.name, )

    def __hash__(self):
        return hash((self.name,))

    def __repr__(self):
        return self.name

然后我有一个字典,其中键和值都是类对象:

classdict = {}
classdict[Person("James")] = {Person("Maria")}
classdict[Person("James")].add(Person("Bonita"))

好的,到目前为止一切顺利。当我做 aprint(classdict)时,响应是:

{James: {Maria, Bonita}}

快速类型检查显示它们都是类对象:

for k, v in classdict.items():
    print(type(k))
    print(type(list(v)[0]))
    print(type(list(v)[1]))

印刷:

<class '__main__.Person'>
<class '__main__.Person'>
<class '__main__.Person'>

但是现在,我对如何使用它感到困惑?
例如,我想通过 name 属性为的键访问字典值James。我该怎么做?愚蠢的我,我试过print(classdict["James"])了,显然没有用,然后给我一个KeyError.

4

0 回答 0