![](/img/trans.png)
[英]Python: Remove all duplicates from a large list of lists efficiently and elegantly
[英]How can I efficiently remove duplicates from a large list in Python?
我需要從超過 1 億個事物的列表中刪除每個重復項。 我嘗試使用 Set 方法將列表轉換為集合並再次轉換回來,但它太遲鈍、太慢並且占用內存。 是否有其他有效的解決方案來實現這一目標?
如果您願意對列表進行排序,那么這就很簡單了。 首先對其進行排序,然后取出唯一的項目。 這與sort | uniq
的方法相同。 sort | uniq
在 shell 中,並且可以相當 memory 高效(使用磁盤代替,當然,Python 的內置排序將在內存中)。
def unique_justseen(iterable, key=None):
"List unique elements, preserving order. Remember only the element just seen."
# unique_justseen('AAAABBBCCDAABBB') --> A B C D A B
# unique_justseen('ABBcCAD', str.lower) --> A B c A D
return map(next, map(operator.itemgetter(1), groupby(iterable, key)))
如果這是緩慢的,你有理由關心嗎? 如果您需要經常執行此操作,則說明您處理數據的方式有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.