这里是初学者,我想知道这是否可能,或者这是否是解决问题的正确方法。
总的想法是有一个不同节点的图,其中每个节点可以是(如下例所示)一个人或一个位置,或其他东西。
我认为表示图形节点和关系的最佳方法是拥有一个集合字典,其中字典键是节点,它的值表示方向弧(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
.