簡體   English   中英

Python:列表的唯一項按其出現的順序排列

[英]Python: Unique items of list in the order that it appears

在 Python 中,我們可以使用set(L)獲取列表L的唯一項。 但是,這樣做會破壞值在原始列表中出現的順序。 有沒有一種優雅的方法可以按照它們在列表中出現的順序獲取獨特的項目?

如果列表中的所有項目都是hashable ,則可以使用字典進行保留順序的重復數據刪除:

L = list(dict.fromkeys(L))

對於標准 dict 不保留順序的舊 Python 版本 (<= 3.6),您可以使用collections.OrderedDict執行相同的操作。

如果任何列表項不可散列,則會出現TypeError 在這種情況下,您可以使用另一種方法,但代價是性能較差。 我建議您參考Patrick Haugh 的回答

l = []
for item in list_:
    if item not in l:
        l.append(item)

對於非常大、多樣化的list_ ,這會變得很慢。 在這些情況下,跟蹤一組可見值也是值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM