0

単一の文字列だけでなく、複数の文字列(配列)を表すキーを持つ辞書を作成するにはどうすればよいですか?したがって、各キーは、キーが別のファイルに存在する場合に新しい文字列を追加し続けることができる配列に関連付けられていますか?

私は比較的新しいPythonプログラマーなので、スクリプトがどのように機能するかを視覚化できます...しかし、残念ながら、適切な構文を考えることはできません。

私はロジックをダウンさせています(私は思う)、Pythonで使用するモジュールまたは関数についてのヘルプが必要です。私の現在のPythonの知識への参照が必要な場合は、ZedShawによるLearnPython theHardWay約3/4です。

それを手に入れましょう。例:

ファイル1:

A
B
C
D

ファイル2:

Ted A
Mike A
Wilma B
Frank C
Dog D
Fred D

ファイル3:

Jon Ted
Sid Ted
Mic Mike
Will Dog
Tod Dog

希望に満ちた結果(ファイル4に書き込む):

>A Ted Mike Jon Sid Mic
>B Wilma
>C Frank
>D Dog Fred Will Tod

したがって、キーにファイル1を使用すると、キーが存在する場合はファイル2と3で要素を埋めることができます。ファイル2のAとDには複数の回答があることに注意してください。次にファイル3を調べて、さらに展開します。また、JonとSid(file3)= Ted(file2)= Aであることがわかります。Aも=Mike(file2)= Mic(file 3)

これは私のデータの最も単純な例(100,000のシーケンス)であり、本当のキッカーは、2つだけではなく5つの階層的に拡張するファイルがあることです(上記の例)。

~~~回答済み~~~

FJらありがとう

4

1 に答える 1

1

以下が機能するはずです。

keys = []
data = {}
names = {}

for line in open('file1', 'r'):
    keys.append(line.strip())
    data[line.strip()] = []

for line in open('file2', 'r'):
    name, key = line.strip().split()
    if key in data:
        data[key].append(name)
        names[name] = key

for line in open('file3', 'r'):
    nickname, name = line.strip().split()
    if name in names:
        data[names[name]].append(nickname)

with open('file4', 'w') as file4:
    for key in keys:
        file4.write('>{0} {1}\n'.format(key, ' '.join(data[key])))
于 2012-11-30T22:01:36.910 に答える