簡體   English   中英

列表列表的唯一元素

[英]unique elements of list of lists

我有一個類似於以下內容的列表(我已方便地將元組的元組轉換為元組,以便set可以獲取唯一元素。

mylist = ((('pen','pineapple'),('apple','pen')),(('pineapple','pen')),(('apple','pen'),('pen','pineapple')))
set(mylist)

>>>
{(('pen', 'pineapple'), ('apple', 'pen')),
('pineapple', 'pen'),
(('apple', 'pen'), ('pen', 'pineapple'))}

但是,就我的應用程序而言,元素('apple', 'pen'), ('pen', 'pineapple') == ('pen', 'pineapple'), ('apple', 'pen')關心。 是否有一種快速的python方法來獲取唯一元素,而無需考慮元素的順序。

編輯1:如評論中指出: (( 'pen', 'apple'), ('pen', 'pineapple')) != (('apple', 'pen'), ('pen', 'pineapple')) 即我不想重新排列最里面的元組。 但是,可以重新排列元組的中間級別。

順便說一句,我希望能比使用sort然后再使用set更具Python風格(或者更好)。

做一套。 集合只能包含不可變的對象,因此您必須將每個元組都轉換為一個frozenset ,然后使用它生成一個集合:

In [4]: set(map(frozenset, mylist))
Out[4]:
{frozenset({('apple', 'pen'), ('pen', 'pineapple')}),
 frozenset({'pen', 'pineapple'})}

暫無
暫無

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

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