如果连续的标签是相同的元组的concat元素

时间:2017-08-04 15:59:14

标签: python list functional-programming tuples

我有一个元组列表。

 [('a', 1), ('b', 1), ('c',1), ('d', 2), ('e',1)]`

元组的第二个元素是它的标签。我想连接标签相同的连续第一个元素。

例如,我想转换  [('a', 1), ('b', 1), ('c',1), ('d', 2), ('e',1)]来  [('abc',1),('d',2), ('e',1)]

1 个答案:

答案 0 :(得分:0)

这里有一个快速的功能,可以循环遍历元组并将每个元组与前一个元组的标签进行比较,并在标签匹配时将它们连接起来。

def parse_tuples(x):
    prev_tuple = list(x[0])
    parsed = []
    for i in x[1:]:
        if i[1] == prev_tuple[1]:
            prev_tuple[0] += i[0]
        else:
            parsed.append(tuple(prev_tuple))
            prev_tuple = list(i)
    parsed.append(tuple(prev_tuple))
    return parsed