perl怎样删除重复取唯一值

文件a.txt

A    B
C    D
B    A
E    F
F    E
D   C
怎样的到
A   B 
E   F
C   D
         

读取文件,然后内容写入数组,再去重,perl数组去重的办法,一种利用哈希(hash),一种直接利用perl自带的模块List::MoreUtils内部的函数uniq

把字符放到数组中,然后用第一个字符跟后面的字符比较,重复的设置为0,第二个也是跟后面的比较重复的设置为0,以此类推。

 
file = open('a.txt')
val_list = file.readlines()
lists =[]
for string in val_list:
    string = string.split(' ',2)
    string[1] = string[1].replace('\n','')
    lists.append(string[0:2]) #只取每个string的前两项,得到的lists即为所要的列表
arrs = lists
res = []
res.append(arrs[0])
flag = False;
for i in arrs:
    flag = False;
    print('i-->toTest',i)
    for j in res:
        print('j-->',j,'i-->',i,(i[0]==j[0] and i[1]==j[1])or(i[0]==j[1] and i[0]==j[1]))
        if((i[0]==j[0] and i[1]==j[1])or(i[0]==j[1] and i[0]==j[1])):
            flag = False;
            break;
        else:
            flag = True;
    if(flag):
         print('i-->toAppend',i)
         res.append(i);
print(res)

 

现在对了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632