2017-08-04 50 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 
相關問題