2013-08-16 26 views
0

如果我有一個形狀像這樣的Python列表:重塑一個Python列表,同時保持順序

T = [ 
['07,07,2012 22:10', ['people','drama','melody','bun']], 
['08,07,2012 21:04', ['queen','group']], 
['08,07,2012 21:23', ['printing','market','shopping']], 
['08,07,2012 21:04', ['people','bun']], 
['08,11,2012 11:14', ['kangaroo']] 
] 

我需要的是這個列表轉換成這種格式:

T =[ 
['07,07,2012 22:10', 'people'], 
['07,07,2012 22:10', 'drama'], 
['07,07,2012 22:10', 'melody'], 
['07,07,2012 22:10', 'bun'], 
['08,07,2012 21:04', 'queen'], 
['08,07,2012 21:04', 'group'], 
['08,07,2012 21:23', 'printing'], 
['08,07,2012 21:23', 'market'], 
['08,07,2012 21:23', 'shopping'], 
['08,07,2012 21:04', 'people'], 
['08,07,2012 21:04', 'bun'], 
[''08,11,2012 11:14'', 'kangaroo'] 
] 

即對於第一個子元素的長度大於1(在原始列表T中)的每個元素,分割第一個子元素(a[1] for a in T if len(a[1] > 1))並將其作爲具有相同時間戳的另一個列表追加。也許我的話缺乏解釋,但上述樣本無疑解釋了我需要做的事情。任何幫助,將不勝感激。

回答

5

使用列表理解:

[(timestamp, item) for timestamp, items in T for item in items]

這會給你一個元組列表,這可能是適合這裏。但是你可以修改它得到一個列表的列表:

[[timestamp, item] for timestamp, items in T for item in items]

+1

或者使用一個列表而不是一個元組來獲得OP所要求的內容(儘管應該不重要)。 –

+0

謝謝@ flornquake..you藝術家總結了這一切。非常感謝 :-) – khan

1

試試這個在T:

def process(t): new = [] for i in t: for j in i[1]: new.append([i[0], j]) return new

+0

列表解析會更快和更Python。 –

相關問題