2014-02-10 64 views
3

Python中是否有數據類型需要一對(a,b)並對稱對待?也就是說,(a,b)被視爲與(b,a)相同的東西。最好是不必有代碼通過檢查a和b的位置是否互換來手動檢查兩對是否相等。Python對稱對數據類型

+2

如果'a'和'b'可以使用'set'。 –

回答

5

你正在尋找一個set() type

>>> pair = {'a', 'b'} 
>>> pair == {'b', 'a'} 
True 

set■找沒有順序。如果您需要將這些用作字典中的鍵,請改用不可變的frozenset() typefrozenset s到set s是什麼tuple s到list s。

只有一個限制:就像字典鍵一樣,爲了能夠將值放入set中,它們需要是可排列的,這通常歸結爲沒有可變類型。

此外,集合中的值必須都是唯一的; {'a', 'a'}減少爲{'a'},這是一組只有一個值。如果您的配對需要支持重複值,則可以使用collection.Counter() objects

+1

我可以想到更多的限制,雖然它很小:'len(pair)'不一定是2,這可能會破壞像'x,y = {'a','a'}'這樣的東西。 – DSM

+0

@DSM:對,在這種情況下,您可以使用'collections.Counter()'對象來支持這樣一對。你必須使用'pair = Counter((''','a'))'並用'x,y = pair.elements()'解包。 –