本体需要注意的点,R排序时按数字大小排列,不能按照字符串排列(判断属于时 in 是按照字符串判断)

from collections import OrderedDict
import sys

def print_res(R_list, L_list):
    temp_list = []
    for r in R_list:
        temp_r = []
        for i,l in enumerate(L_list):
            if r in l:
                if r in temp_r:
                    temp_r[1] += 1
                    temp_r[2].append((i, l))
                else:
                    temp_r = [r, 1, [(i,l)]]   #[r , rcount, [(index, l)]]
        else:
            if temp_r != []:
                temp_list.append(temp_r)
    count = 0
    for i in temp_list:
        for _ in i[2]:
            count += 2
        count += 2
    temp_list = sorted(temp_list, key=lambda x:int(x[0]))
    print(count, end=" ")
    for i in temp_list:
        print(i[0], end=" ")
        print(i[1], end=" ")
        for j in i[2]:
            print(j[0], end=" ")
            print(j[1], end=" ")

input_info = sys.stdin.readlines()
for i in range(0, len(input_info),2):
    l_list = input_info[i].split()[1:]
    l_list = [x.strip() for x in l_list]
    r_list = input_info[i+1].split()[1:]
    r_list = [x.strip() for x in r_list]
    r_list = list(sorted(list(set(r_list))))
    print_res(r_list, l_list)
    print("")