关于两个部分有交集的列表的数据处理

已知:
有两个列表
lista=[1,2,3,4,5,6]
listb=[7,8,9,10,11,12]

有一个两者部分元素之间的关系的二维列表
list-ab=[#[2,9] , [3,11] , [5,12],[1,7]#]

想要生成如下结果:

img

刚才没注意格式 抱歉



def llab():
    lista = [1, 2, 3, 4, 5, 6]
    listb = [7, 8, 9, 10, 11, 12]
    list_ab = [[2, 9], [3, 11], [5, 12], [1, 7]]

    abi = [lista.insert, listb.insert]
    ida = lista.index
    idb = listb.index
    for a, b in sorted(list_ab):
        ai = ida(a)
        bi = idb(b)
        if s := abs(ai - bi):
            ins = abi[ai > bi]
            idx = min(ai, bi)
            for _ in range(s):
                ins(idx, '-')

    ab = [lista, listb]
    al, bl = map(len, ab)
    ab[al > bl].extend(['-'] * abs(al - bl))

    print(*lista, sep='\t')
    print(*listb, sep='\t')


if ismain := __name__ == '__main__':
    llab()

img

img

你题目的解答代码如下:

lista=[1,2,3,4,5,6]
listb=[7,8,9,10,11,12]
list_ab=[[2,9] , [3,11] , [5,12]]

dict_a={ k:v for k,v in list_ab }
dict_b={ k:v for v,k in list_ab }
r1 = []
r2 = []
i = 0
j = 0
while i<len(lista) and j<len(listb):
    a = lista[i]
    b = listb[j]
    if dict_a.get(a)==None or dict_a.get(a)==b:
        r1.append(str(a))
        i += 1
    else:
        r1.append("-")
    if dict_b.get(b)==None or dict_b.get(b)==a:
        r2.append(str(b))
        j += 1
    else:
        r2.append("-")

while i<len(lista):
    r1.append(str(lista[i]))
    i += 1
    r2.append("-")
while j<len(listb):
    r1.append("-")
    r2.append(str(listb[j]))
    j += 1

print(r1)
print(r2)

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

啥子规律,狗看了需求都得回去哭一顿

两者部分元素之间的关系的二维列表,你重新举个例子呢。
你那个例子乱了,看不懂