2017-06-26 40 views
0
名单的

比方说,我目前的第一要素来分类的元组的列表:清单列出元组

tuple_list = [(1, "hello", "apple"), (1, "no", "orange"), 
    (2, "bye", "grape"), (3, "okay", "banana"), 
    (4, "how are you?", "raisin"), (4, "I'm doing well", "watermelon")] 

我希望把元组的这份名单为基础的元组的列表清单在每个元组的第一个元素上。

例如:

new_tuple_list = [[(1, "hello", "apple"), (1, "no", "orange")], 
    [(2, "bye", "grape")], [(3, "okay", "banana")], 
    [(4, "how are you?", "raisin"), (4, "I'm doing well", "watermelon")]] 

回答

2

使用itertools.groupby基于整数组项目:

from itertools import groupby 

lst = [list(g)for _, g in groupby(tuple_list, lambda x: x[0])] 
print(lst) 

[[(1, 'hello', 'apple'), (1, 'no', 'orange')], 
[(2, 'bye', 'grape')], 
[(3, 'okay', 'banana')], 
[(4, 'how are you?raisin'), (4, "I'm doing well", 'watermelon')]] 
2

您可以使用itertools.groupby这个:

[list(x) for k, x in itertools.groupby(tuple_list, operator.itemgetter(0))]