Python脚本,用于将落在同一行上的项添加到命名组中

Python脚本,用于将落在同一行上的项添加到命名组中,python,list,dictionary,grouping,Python,List,Dictionary,Grouping,我对python没有什么经验,而且我在思考如何将落在同一行的项目分组到一个列表中,然后移动到下一行并询问当前列表中是否存在这两个项目中的任何一个时遇到了很多困难?。如果其中一个添加了,则将行上的另一项附加到同一列表中。如果列表中已经存在这两个选项,则不执行任何操作。如果列表中两个项目都不存在,则创建一个新列表并添加这两个项目。最后,我需要一个自己行中所有项目的输出,以及它们旁边列中的列表名称。它不一定非得是列表,它只需要在命名的组中 输入示例: A F G H F J Y

我对python没有什么经验,而且我在思考如何将落在同一行的项目分组到一个列表中,然后移动到下一行并询问当前列表中是否存在这两个项目中的任何一个时遇到了很多困难?。如果其中一个添加了,则将行上的另一项附加到同一列表中。如果列表中已经存在这两个选项,则不执行任何操作。如果列表中两个项目都不存在,则创建一个新列表并添加这两个项目。最后,我需要一个自己行中所有项目的输出,以及它们旁边列中的列表名称。它不一定非得是列表,它只需要在命名的组中

输入示例:

A    F
G    H
F    J
Y    G
H    G
示例输出:

A    List1
F    List1
J    List1
H    List2
G    List2
Y    List2
我不知道是否尝试将它们放入字典键中,因为这些键将如何命名并在以后使用每个值打印。将有几千个组或项目列表,因此python脚本需要自动命名每个新组,我不知道如何命名

下面是一些我正试图编写的代码,但它缺少了很多,因为我正在了解使用哪种方法来实现这一点

for line in data:
    values = line.split()
    name1 = values[0]
    name2 = values[1]       

    if name1 in group:
        if name2 not in group:
            append name2

    elif name2 in group:
        if name1 not in group:
            append name1

    elif name1 and name2 not in group:
        append name1 and name2 in new group

    else:
        continue

这似乎很容易用一本字典做到。在本例中,我实际上并没有制作任何列表,只是确定每个项目将进入哪个列表。若您确实需要实际的列表对象,您可以稍后添加它们,或者存储它们而不是数字

data_str = '''A    F
              G    H
              F    J
              Y    G
              H    G'''
data = [line.strip().split() for line in data_str.splitlines()]

list_ids = {}
next_id = 0
for a, b in data:
    if a in list_ids and b in list_ids:
        pass # do nothing if they both are already in a list
    elif a in list_ids:
        list_ids[b] = list_ids[a]
    elif b in list_ids:
        list_ids[a] = list_ids[b]
    else:
        list_ids[a] = list_ids[b] = next_id
        next_id += 1

for name, id in list_ids.items():
    print(name, id)

请注意,如果您需要通过加入列表来处理列表中已经存在的项,而不是忽略列表中已经存在的对,那么您正在处理的是具有一些非常漂亮的算法的项。

您不能使用列表来完成此操作,您如何检查列表中尚未创建的项?我认为您需要进一步解释一下您试图实现的目标。啊,由于每行有六个值,应该分成两组,每组三个,您需要在循环之前对数据进行一些额外的处理,或者更改for循环以解压缩循环中的所有六列值,并使用其中的三个元组进行索引。