比较lis中的元组

2024-09-30 12:34:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 列表元组cx8888rj5874
2条回答

使用字典而不是列表,然后将字典转换为所需格式:

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

一种简单的方法是使用^{},然后转换回列表:

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

相关问题 更多 >

    热门问题