2023年7月1日 星期六

Python 學習筆記 : 比較兩個串列並剔除其中相同元素的方法

兩周前開工的維護作業自動化軟體周五本已竣工, 但搭檔同事提出新的需求, 希望能在軟體中添加比對兩台機器相同資料表內的 record 的自動比對功能, 兩台互為備援的機器照理說每一個 peer 資料表內容應該一樣, 但有時就是會因為特殊問題而新增並一台所沒有的資料, 以前都要先 dump 資料表, 然後匯入 Excel 中左右對照人工比對, 實在很耗時間, 如能寫到軟體中一鍵比對豈不美哉. 

從周五晚上開始新增這項功能, 今天晚上終於完工啦. 比對的方法很簡單, 核心概念就只是利用集合的差集運算而已. 工作上實際處理的資料是 dump 出來的龐大一列列字串資料, 但下面為了說明方便簡化為利用 split('\n') 後的兩個字串串列, 例如 :

lista=['apple', 'banana', 'melon', 'grape']
listb=['banana', 'guava', 'melon', 'kiwi']
diff1=list(set(lista) - set(listb))
diff2=list(set(listb) - set(lista))
print(diff1)  
print(diff2)

執行結果如下 : 

>>> %Run test9.py
['grape', 'apple']
['kiwi', 'guava']

第一個結果是 a 串列有但 b 串列沒有的; 第二個結果是 b 串列有但 a 串列沒有的. 

沒有留言 :