2013-02-25 69 views
-2

我有以下列表:Python:如何合併列表中的東西?

>>> list_of_list = [ ['a', 2], ['b', 3], ['a', 4, 5] ] 

我想以下結果: 1.能告訴我有2個不同的項目:「A」和「B」 2.有2項「 b ' 'A」在和1個項目' A'= [2,4,5] 'b'= 3

由於

+0

的有趣的方式:'字典((X,[Z [1]用於沿y Z])爲X,Y在GROUPBY(排序(LST),λ-X:X [0]))' – 2013-02-25 11:33:03

+1

你需要什麼[詞典](http://docs.python.org/2/library/stdtypes.html#dict) – 2013-02-25 11:33:22

回答

5

可以(應)使用字典,並映射中的第一項在每個子列表('值')中的第二項的每個子列表('鍵')中。

使用defaultdict將爲您省去用空列表實例化每個新密鑰的麻煩。

也如eumiro指出的那樣,爲了保持一致,'b'的值應該是單個項目3而不僅僅是數字3的列表。

from collections import defaultdict 

d = defaultdict(list) 
for item in list_of_list: 
    d[item[0]].append(item[1]) 
+1

太好了。現在向OP解釋一下,將字典中的值保持一致是一個好主意(即'd ['b']'應該是'[3]'而不是'3')。 – eumiro 2013-02-25 11:29:55

+0

@eumiro:我不認爲這是必要的,他/她可能會很難學到它:) – 2013-02-25 11:31:07

+0

很好的答案,從我+1,但解釋也會很好。 – pcalcao 2013-02-25 11:32:43