0

名前といくつかのクエリを含むテキスト ファイルを書き込むプログラムがあります。最初の 4 行は、左側に親の図を定義し、コロンの後にその子を定義することから始まります。もしそうなら、それを家系図と考えてください。この演習では、辞書を使用してこの問題を解決するよう求めています。

これがファイルの始まりです..

test_file = open('relationships.txt', 'w')
test_file.write('''Sue: Chad, Brenda, Harris
Charlotte: Tim
Brenda: Freddy, Alice
Alice: John, Dick, Harry

mother Sue
mother Charlotte
mother Brenda
mother Dick
''')
test_file.close()

出力は ..

Mother not known
Mother not known
Sue
Alice

mother子供がどの母親に属しているかを確認するこのクエリを作成する方法がわかりません。私はいくつかのことを試しました..

parents = {}

for line in lines[0:4]:
    parent, child = line.strip().split(':')

    if parent in parents:
        parents[parent] += str(child)
    else:
        parents[parent] = str(child)

print(parents)

この時点で、誰の母親が誰であるかにアクセスして把握する方法に行き詰まっています。私が考えることができる唯一の他の方法は、キーと値を入れ替えて、すべての子供の母親を個別にラベル付けする行の膨大なリストを作成することです。

4

2 に答える 2

3

単一の文字列ではなく、子のリストを保持する必要があります。

for line in lines[0:4]:
    parent, child = line.strip().split(':')

    if parent in parents:
        parents[parent].append(child)
    else:
        parents[parent] = [child]

これで、親を繰り返し処理して、特定の子を確認できます。

child = 'Peter'

for parent, children in parents.items():
    if child in children:
        print('Mother is', parent)
        break
else:
    print('Mother not known')

子を親にマップするディクショナリを作成すると、ルックアップが高速になります。

于 2013-05-18T06:02:28.303 に答える