所以我有一个元组列表,例如:
[('CX8888', '2017-01-01T00:10:59'), ('RJ5874', '2017-01-01T00:11:39'), ('RJ5874', '2017-01-01T00:12:08')]
如果一个元组的第一个索引与另一个元组相同,它将创建一个新列表,如下所示:
[('CX8888', '2017-01-01T00:10:59'), ('RJ5874', ['2017-01-01T00:11:39', '2017-01-01T00:12:08'])]
答案 0 :(得分:0)
使用字典而不是列表,然后将字典转换为所需格式:
l = [('CX8888', '2017-01-01T00:10:59'), ('RJ5874', '2017-01-01T00:11:39'), ('RJ5874', '2017-01-01T00:12:08')]
d = {}
for tup in l:
if tup[0] in d:
d[tup[0]].append(tup[1])
else:
d[tup[0]] = [tup[1]]
list(zip(d.keys(),d.values()))
[('CX8888', ['2017-01-01T00:10:59']),
('RJ5874', ['2017-01-01T00:11:39', '2017-01-01T00:12:08'])]
答案 1 :(得分:0)
一种简单的方法是使用collections.defaultdict
然后转换回列表:
from collections import defaultdict
lst = [('CX8888', '2017-01-01T00:10:59'),
('RJ5874', '2017-01-01T00:11:39'), ('RJ5874', '2017-01-01T00:12:08')]
d = defaultdict(list)
for key, value in lst:
d[key].append(value)
d2 = list(d.items())
但是考虑到这种数据结构,最好只使用字典d
而不是列表d2
。