如何用正则来提取最长文本

有一列数据(来自excel),如何通过正则表达式或者pandas(优先pandas),让最低层级保留。
例如1.1为1的下层,则删除1,保留1.1。
又例如3.1.1.1是3、3.1、3.1.1的下层,所以删除3、3.1、3.1.1

1
1.1
1.2
2
2.1
3
3.1
3.1.1
3.1.1.1
3.1.1.2
3.2

所以,最终输出的结果如

1.1
1.2
2.1
3.1.1.1
3.1.1.2
3.2

a=["1","1.1","1.1.1.1","2","2.1","2.2","2.3","3","3.1","3.2.1","3.1.1.1.1","3.1.2","3.1.3",]
b=set()
for i in range(len(a)):
    temp=a[i]
    for k in range(i+1,len(a)):
        if a[k].startswith(a[i]):
            temp = a[k] if len(a[k])>=len(a[i]) else a[i]
    b.add(temp)

print(b)

这个简单呐,匹配开头就行。只要1.1的开头是1就删除1

def f(item):
    t = item
    for i in l:
        if i.startswith(t + '.'):
            t = i
    return t
l = ["1","1.1","2","2.1","1.2","1.10.1","1.10"]
res = set(map(f, l))
print(res)