2016-06-21 20 views
1

考慮元組的列表: [(14,1), (10,5), (8,7), (1,14)]刪除重複(非精確)元組在Python

我需要淘汰的(1,14) & (14,1)之一。所以預期的結果應該是[(14,1),(10,5),(8,7)][(10,5),(8,7),(1,14)]

注意:順序無關緊要。

我知道set()可以用來消除確切的重複。組合也不會有太大的幫助,因爲所有這些組合總和相同。

+0

相反元組的列表,你可以有一組套。 – syntonym

+0

你是什麼意思?你可以請進一步解釋而不是downvoting? –

回答

3

鑑於這種情況,使用一組集合將是明智的。集合不允許重複,訂單被指定爲無關緊要。

如果你沒有在創建數據的控制,而是必須從當前的數據轉換到這一點,你可以在這個轉換當前的數據:

{frozenset(i) for i in dataset} 

你必須使用frozensetset是不是可排列的類型。這不比使用tuple更具限制性。

+0

@MosesKoledoye這適用於這種情況下給OP什麼正是想要的,但不會總是返回OP的預期。測試'[(14,1),(10,5),(8,7),(1,14),(12,3)]' - (12,3)'將被交換爲'( 3,12)'。鑑於數據的資格,它應該設置在所有地方。 – Kupiakos

+0

非常感謝您的建議! –

+0

抱歉。我想我可以接受多個答案。 –

1

排序元組

data = [(14,1), (10,5), (8,7), (1,14)] 
set([ tuple(sorted(i)) for i in data]) 

輸出:

set([(5, 10), (1, 14), (7, 8)])