2013-05-28 204 views
1

我在想如何去計算列表中的組合。更確切地說,我有一個由6個隨機選取的數字構成的較小列表組成的列表,我想要統計每個組合在較大列表中出現的次數,然後顯示最少出現的組合。到目前爲止,我嘗試使用Counter(),但它似乎無法計數列表。 這裏是我想要做的一個例子:如何計算組合數

list = [[1,2,3,4,5,6],[1,5,16,35,55,22],[1,2 3,4,5,6-],[5,25,35,45,55,10],[1,5,16,35,55,22],[1,2,3,4,5,6 ],[9,16,21,22,23,6],[9,16,21,22,23,6]]

所以在計數組合後,應打印組合[5,25,35 ,45,55,10] ,因爲它只在列表

僅供參考列表將會隨機存儲但是考慮號碼的範圍大約1十億組合產生髮生過一次,有隻有175萬個可能的組合

僅供參考2我非常新的python

回答

0

當你構造Counter實例時,你可以將你的列表轉換爲元組;後者是可散列的,這是一個對象需要能夠作爲字典的關鍵的屬性。

>>> from collections import Counter 
>>> l = [[1,2,3,4,5,6],[1,5,16,35,55,22],[1,2,3,4,5,6],[5,25,35,45,55,10],[1,5,16,35,55,22],[1,2,3,4,5,6],[9,16,21,22,23,6],[9,16,21,22,23,6]] 
>>> c = Counter(tuple(e) for e in l) 
>>> c 
Counter({(1, 2, 3, 4, 5, 6): 3, (1, 5, 16, 35, 55, 22): 2, (9, 16, 21, 22, 23, 6): 2, (5, 25, 35, 45, 55, 10): 1}) 
>>> list(c.most_common()[-1][0]) 
[5, 25, 35, 45, 55, 10] 
+0

感謝您的快速回復btw有沒有一種方法可以使數字的順序重要的組合,例如[1,2,3,4,5,6]應該是從[6, 2,4,5,1,3]數字排序原因 –

+0

上面的方法已經做到了。 (如果您想忽略順序,請將'tuple'更改爲'frozenset'。) – Alp

+0

謝謝您澄清對我而言 –