考慮元組的列表: [(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()
可以用來消除確切的重複。組合也不會有太大的幫助,因爲所有這些組合總和相同。
考慮元組的列表: [(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()
可以用來消除確切的重複。組合也不會有太大的幫助,因爲所有這些組合總和相同。
鑑於這種情況,使用一組集合將是明智的。集合不允許重複,訂單被指定爲無關緊要。
如果你沒有在創建數據的控制,而是必須從當前的數據轉換到這一點,你可以在這個轉換當前的數據:
{frozenset(i) for i in dataset}
你必須使用frozenset
爲set
是不是可排列的類型。這不比使用tuple
更具限制性。
@MosesKoledoye這適用於這種情況下給OP什麼正是想要的,但不會總是返回OP的預期。測試'[(14,1),(10,5),(8,7),(1,14),(12,3)]' - (12,3)'將被交換爲'( 3,12)'。鑑於數據的資格,它應該設置在所有地方。 – Kupiakos
非常感謝您的建議! –
抱歉。我想我可以接受多個答案。 –
排序元組
data = [(14,1), (10,5), (8,7), (1,14)]
set([ tuple(sorted(i)) for i in data])
輸出:
set([(5, 10), (1, 14), (7, 8)])
相反元組的列表,你可以有一組套。 – syntonym
你是什麼意思?你可以請進一步解釋而不是downvoting? –