2017-04-16 35 views
-1

的名單我有一個這樣的名單:如何自動分離元組

a = [(a, b), (c, i), (d, i), (e, b), (f, b), (g, i)] 

我想單獨在元素b存在的元組的列表中。結果應該是這樣的:

a = [[(a, b), (c, i), (d, i)], [(e, b)], [(f, b), (g ,i)]] 

有沒有什麼辦法可以做到這一點?

+1

您的輸出是否與您的輸入不相同? – asongtoruin

+0

不,不,不,不,這是一個錯誤的抱歉 –

+0

輸出如何與輸入相關並不清楚。 –

回答

0

下面是一個例子:

def group_b(arr): 
    b_in_group = False 
    grouped = [] 
    group = [] 
    for tup in arr: 
     if "b" in tup: 
      if not b_in_group: 
       group.append(tup) 
       b_in_group = True 
      else: 
       if group: 
        grouped.append(group) 

       group = [tup] 
     else: 
      group.append(tup) 

    grouped.append(group) 

    return grouped 

print (group_b([("a", "b"), ("c", "i"), ("d", "i"), ("e", "b"), ("f", "b"), ("g", "i")])) 
0

如果希望能在一個單一子列表列表您的輸出,你知道,將插入點始終在列表的最後一個子表。每當你看到測試數據時,附加一個新的空列表。

a = 'a' 
b = 'b' 
c = 'c' 
d = 'd' 
e = 'e' 
f = 'f' 
g = 'g' 
h = 'h' 
i = 'i' 

# input list 
in_list = [(a,b),(c,i),(d,i),(e,b),(f,b),(g,i)] 

# output 
out = [[]] 

for tpl in in_list: 
    if b in tpl: 
     # if existing list has data, push empty list on end 
     if out[-1]: 
      out.append([]) 
    out[-1].append(tpl) 

print(out)