比较列表中的元组

时间:2018-10-01 09:04:26

标签: python python-3.x tuples

所以我有一个元组列表,例如:

[('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'])]

2 个答案:

答案 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