按类别组合列表,并为每个列表创建带有说明的新列

问题描述 投票:-1回答:1

我有15个.txt列表,我希望按类别进行合并,并在新列中将每个列表的描述分开。不幸的是,并不是每个列表中都存在所有类别,因此说明需要与正确的类别相对应。

例如,如果我的两个列表看起来像:

List 1:
1   a
4   b
5   c
2   d



List 2:
3   a
6   c
7   f
2   g

我正在寻找一个输出,例如(但最终要合并15个文件):

a   1   3
b   4   
c   5   6 
d   2   
f       7
g       2

有人提供脚本建议来帮助实现这一目标吗?谢谢!

python list perl scripting command
1个回答
1
投票

PYTHON解决方案:

我想您的文件以这种方式包含数据:

1   a
4   b
5   c
2   d

这是我的示例代码,我将解释发生了什么。

files = ['test1.txt', 'test2.txt']
category_dict = dict()
for _file in files:
    with open(_file, 'r') as fhl:
        for line in fhl:
            key, val = line.split()
            if key in category_dict:
                category_dict[key].append(val)
            else:
                category_dict[key] = [val]
print(category_dict)

打印结果:

{'1': ['a'], '4': ['b'], '5': ['c'], '2': ['d', 'g'], '3': ['a'], '6': ['c'], '7': ['f']}

首先,我要创建一个简单列表,列出要读取的所有文件。请注意,您可以os.walk(在线检查)以从目录中获取您想要的所有文件,或者您可以在此列表中添加失败(完全拍拍)。

files = ['test1.txt', 'test2.txt']

然后我们创建一个字典对象,以您想要的方式存储我们的数据:

category_dict = dict()

然后我们遍历文件列表,打开每个文件,然后逐行读取它:

for _file in files:
    with open(_file, 'r') as fhl:
        for line in fhl:

这里是有趣的部分。如果文件的格式与上面显示的格式不完全相同,则可能会以您想要的方式获取并出错或读取数据。检查文件,并根据需要调整'split()'部分。

此外,我们拆分(在线检查),基本上将字符串拆分为单词列表。

key, val = line.split()

请注意,如果它们之间没有空格,则可能需要调整上面的行。

之后,我们检查'key'是否出现在'category_dict'中,如果没有,我们创建它,然后使其等于从文件中获取的值的列表。如果键已经存在,则意味着我们已经为该“键”分配了一个或多个值的列表。然后,我们只需追加新值。

这样,您将拥有一个“类别”,并分别保留每个“键”值。

© www.soinside.com 2019 - 2024. All rights reserved.