首頁 > 後端開發 > Python教學 > 如何在保留順序的同時有效地從 Python 清單中刪除重複的字典?

如何在保留順序的同時有效地從 Python 清單中刪除重複的字典?

DDD
發布: 2024-11-30 15:27:10
原創
309 人瀏覽過

How to Efficiently Remove Duplicate Dictionaries from a Python List While Preserving Order?

從 Python 清單中刪除重複的字典

處理字典清單時,通常需要刪除共用相同鍵的重複項 -值對。本文提供了使用 Python 的強大解決方案。

問題陳述:

給定一個字典列表,目標是刪除包含相同鍵和值的字典

解:

為了實現這一點,我們採用兩步驟方法:

  1. 將字典轉換為Hashable元組:
    我們將每個字典轉換為一個元組,其中元素是鍵值對。這一步至關重要,因為字典不可散列,但元組可以。
  2. 使用集合刪除重複項:
    我們從元組清單建立一個集合。集合會自動刪除重複項,只留下唯一的元組。

為了從唯一的元組重建字典,我們使用字典理解。這是程式碼片段:

original_list = [{'a': 123}, {'b': 123}, {'a': 123}]

# Convert dictionaries to tuples
tuples = [tuple(d.items()) for d in original_list]

# Remove duplicates using a set
unique_tuples = set(tuples)

# Reconstruct dictionaries
result_list = [dict(t) for t in unique_tuples]

print(result_list)
登入後複製

輸出:

[{'a': 123}, {'b': 123}]
登入後複製

保留排序:

如果保留原始字典的順序至關重要,我們可以使用稍微不同的方法:

  1. 建立一個Seen 集:
    初始化一個名為 saw 的集合來追蹤唯一的元組。
  2. 迭代字典:
    迭代原始列表,對於每個字典,將其轉換為元組。如果元組不在可見集合中,則新增它並將字典附加到結果清單中。

程式碼如下:

original_list = [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}]

seen = set()
result_list = []

for d in original_list:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        result_list.append(d)

print(result_list)
登入後複製

輸出:

[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]
登入後複製

以上是如何在保留順序的同時有效地從 Python 清單中刪除重複的字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板