python,有两个列表,怎么取第二个列表中对应第一个列表中相同数字?? 不太会解释,麻烦看一下例子

如[[0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 5, 6, 7], [1, 2, 3, 4, 6, 7, 9, 3, 6, 8, 9, 8, 9, 6, 7, 8, 9, 8, 8]],要变成[(0, [1, 2, 3]), (1, [0, 4, 6, 7, 9]), (2, [0, 3, 6, 8, 9]), (3, [0, 2, 8, 9]), (4, [1, 6, 7, 8]),(5, [9]), (6, [1, 2, 4, 8]), (7, [1, 4, 8]), (8, [2, 3, 4, 6, 7]), (9, [1, 2, 3, 5])]

这个问题好像不是第一次问了,我2次看了半天还是搞不懂什么关系

 def unique_index(L,e):
    return [i for i in range(len(L)) if L[i]==e]

a=[[0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 5, 6, 7], [1, 2, 3, 4, 6, 7, 9, 3, 6, 8, 9, 8, 9, 6, 7, 8, 9, 8, 8]]

list1=a[0]
list2=a[1]

element=list(set(list1+list2))  ##去重
l=[]
for i in range(len(element)):
    k = []
    k.append(element[i])
    l.append(k)
    list1_i=unique_index(list1,i)##元素位置
    list2_i=unique_index(list2,i)##元素位置
    x=[]
    for n in list1_i:
        x.append(list2[n])
    l[i].append(x)
    for m in list2_i:
        l[i][1].append(list1[m])

print(l)


我看了半天解决这个问题可以分为两步:
1,先根据数字在第二个列表的位置找第一个列表的数
2,再根据第一个列表数字位置找第二个
代码如下:

# 1,先根据数字在第二个列表的位置找第一个列表的数
# 2,再根据第一个列表数字位置找第二个
# 代码如下:

li = [[0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 5, 6, 7],
        [1, 2, 3, 4, 6, 7, 9, 3, 6, 8, 9, 8, 9, 6, 7, 8, 9, 8, 8]]


# 我将它封装成了一个方法,这个方法要传两个参数(总列表和要查询的数字)
def select_list(list, num):

    # 遍历第二个列表中的数字和位置
    list_finally = []
    for ind, ls2 in enumerate(list[1]):
        # 和要查询的数字进行比对
        if num == ls2:

            # 根据获取的索引取第一个列表的数,并放入list_finally里面
            list_finally.append(list[0][ind])
    for ind, ls1 in enumerate(list[0]):
        # 继续和要查询的数字进行比对
        if num == ls1:

            # 根据获取的索引取第一个列表的数,并放入list_finally里面
            list_finally.append(list[1][ind])

    # 最后返回列表
    return list_finally

经过我的测试和上面结果一样:
图片说明