2015-10-23 65 views
3

我有一個數組,看起來像這樣:分組項目基於其內容

array1 = [[4000,"Mark",5],[4100,"George",3],[4000,"Mark",2],[4200,"Steve",4],[4100,"George",2],[4000,"Mark",1]] 

我不知道我該如何重新格式化該陣列看起來像這樣:

array2 = [[4000,"Mark",[5,2,1]],[4100,"George",[3,2]],[4200,"Steve",4]] 

回答

6

您可以使用有序字典(collections.OrderedDict)將前2項作爲關鍵字存儲,將常用數字存儲在列表中作爲值:

>>> from collections import OrderedDict 
>>> d=OrderedDict() 
>>> for i,j,k in array1: 
... d.setdefault((i,j),[]).append(k) 
... 
>>> [[i,j,k] for (i,j),k in d.items()] 
[[4000, 'Mark', [5, 2, 1]], [4100, 'George', [3, 2]], [4200, 'Steve', [4]]] 
+2

很好的答案...比我更聰明:) –

+0

謝謝你的偉大答案!定時器啓動後,我會選擇你。 – Peter

2
[a+[[c[-1] for c in b]] for a,b in itertools.groupby(operator.itemgetter(0,1),sorted(array1))] 

我想......我懷疑這是去幫助你學習什麼...一個更合適的地方來尋求幫助,如果你甚至不知道從哪裏開始,在類(請你的老師或同學) ...