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

さて、これまでのところとても良いです。を実行する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

4

0 に答える 0