2013-08-16 35 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。 –

相关问题