0

我将如何制作一个字典,其键不仅代表单个字符串,而且代表多个字符串(数组)?所以每个键都绑定到一个数组,如果该键存在于另一个文件中,我可以继续向该数组附加新字符串?

我是一个相对较新的 Python 程序员,所以我可以想象我的脚本是如何工作的……但是我想不出正确的语法。

我有逻辑(我认为),我只需要在 Python 中使用哪些模块或函数的帮助。如果您需要参考我目前在 Python 方面的知识,我已经完成了 Zed Shaw的 Learn Python the Hard Way的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 个(上面的示例)。

~~~ 回复了~~~

谢谢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 回答