如何在 Python 中刪除清單中的重複項
了解如何從 Python 清單中刪除重複項,同時保持或忽略順序。比較集合轉換、字典鍵和循環方法。
概述
重複資料經常透過資料庫取得、使用者互動或日誌聚合進入清單。刪除這些重複項是基本的資料清理步驟,可確保唯一性並防止下游邏輯中出現冗餘。 Python 提供了多種技術來實現這一點,從快速集合轉換到尊重元素排序的基於循環的操作。
消除重複元素的最快且最常見的方法是使用“set()”建構函數將清單轉換為“set”,然後將其轉換回列表。由於集合不能包含重複值,因此此過程會自動丟棄重複值。這種方法的缺點是集合是無序的,這意味著元素的原始序列丟失了。
為了在刪除重複項的同時保留元素的原始順序,Python 3.7+ 使用內建字典類別提供了一個巧妙的解決方案:「list(dict.fromkeys(my_list))」。由於字典鍵是唯一的並且保留插入順序,因此該方法可以有效地刪除重複元素,同時保持序列完整。對於自訂標準或舊版的 Python,使用輔助集來追蹤可見元素的手動循環也非常有效。
程式碼和執行輸出
該腳本演示了使用集合、字典鍵和手動循環來刪除重複列表元素。
deduplicate_list.py
在編輯器中嘗試numbers = [2, 1, 2, 3, 1, 4]
# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)
# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)
# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
if item not in seen:
seen.add(item)
unique_loop.append(item)
print("Loop unique:", unique_loop)端子輸出
Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]逐步實施
- 使用 set(my_list) 將清單轉換為集合以立即刪除重複項。
- 使用 list(dict.fromkeys(my_list)) 刪除重複項,同時保留插入順序。
- 如果需要自訂驗證,請使用循環中的輔助組件來篩選掉重複項。
常見問題解答
對於大型列表,哪種方法最快?
由於 C 級最佳化,轉換為集合是最快的,緊隨其後的是 dict.fromkeys()。
如何刪除字典清單中的重複項?
由於字典是不可散列的,因此不能直接使用集合。您必須使用透過唯一 ID/鍵進行循環或清單理解過濾。
相關主題
推薦的 Python 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。