2017-08-04 72 views
-6

我有一个元组列表。如果连续的标签相同,元组的concat元素是相同的

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

+0

为什么要标记Haskell和Python? –

+0

我想这样做是功能性的方式。 – user3125971

+0

@ user315971:尽管Haskell是一种函数式语言,但如果您想以功能方式在Python中执行操作,则不应该包含它,反之亦然。 –

回答

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 
相关问题