ここは初心者で、これが可能かどうか、またはこれが問題にアプローチする正しい方法であるかどうか疑問に思っていました。
全体的なアイデアは、さまざまなノードのグラフを作成することです。各ノードは (次の例のように) 人、場所、またはその他のものである可能性があります。
グラフのノードと関係を表現する最善の方法は、辞書のキーがノードであり、その値が方向アーク (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"))
さて、これまでのところとても良いです。を実行するprint(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
。