基于元组中的值对列表进行分区 - Python

时间:2011-03-14 06:37:25

标签: python list tuples

在python中分区元组列表的最佳方法是什么?

目前我有第二个元素(值)的元组排序列表,我希望找到所有在开头以有效方式重复的值。

说:

[ ("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), 
  ("denny", 0), ("mark",0) ]

通过该函数运行它将返回

[("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3)]. 

但我不知道该如何解决这个问题。

3 个答案:

答案 0 :(得分:4)

import itertools
import operator

L = [("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), ("denny", 0), ("mark",0)]

print list(itertools.groupby(L, operator.itemgetter(1)).next()[1])

# [('tearing', 3), ('me', 3), ('apart', 3), ('lisa', 3)]

但实际上,没有必要提醒我这部电影。

答案 1 :(得分:1)

from itertools import takewhile

L = [("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), ("denny", 0), ("mark",0)]
first = L[0][1]

print list(takewhile(lambda x : x[1] == first, L))

ignacio的一个小变种

答案 2 :(得分:0)

@Ignacio Vazquez-Abrams回答的替代方案,使用列表推导:

>>> data=[ ("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), ("denny", 0), ("mark",0) ]
>>> print [x for x in data if x[-1]== data[0][-1]]
[('tearing', 3), ('me', 3), ('apart', 3), ('lisa', 3)]