0

如果我有一个形状如下的 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)) 并将其附加为具有相同时间戳的另一个列表。也许我的话缺乏解释,但上面的示例肯定会解释我需要做什么。任何帮助,将不胜感激。

4

2 回答 2

5

使用列表推导:

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

这将为您提供一个元组列表,这可能适合这里。但是您可以修改它以获取列表列表:

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

于 2013-08-16T15:17:39.893 回答
1

在 T 上试试这个:

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

于 2013-08-16T15:17:20.367 回答