簡體   English   中英

如何在python中有效地比較兩個集合列表?

[英]How to compare two list of sets effectively in python?

我有一個集合列表:

list = [{1,2}, {2,3}, {1,3}, {2,1} etc]

我需要一個列表,其中每個元素都出現一次。 創建一組列表失敗,出現一個 set is not hashable 錯誤如果我創建另一個列表,並使用 if not in list 添加每個元素一次,然后追加列表有效,但現在我必須處理一個包含大約 600 000 個值對的列表,而且需要永遠。 有沒有更有效的方法?

引用您的評論; 正如您所提到的,這行得通,我會將我的評論作為正確答案發布。

set(map(tuple, list_))

輸出:

{(1, 2), (1, 3), (2, 3)}

請注意:
我已將您的list變量命名為list_ ,因為它覆蓋了內置變量。

這種方法似乎是線性縮放的。 1000 組列表的時間為 206 us,10000 為 2.19 ms。

您可以使用以下方法對集合列表執行聯合:

l = [{1,2}, {2,3}, {1,3}, {2,1}]
set.union(*l)

輸出:

{1, 2, 3}

暫無
暫無

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

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