首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于元组中的值对列表进行分区- Python

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

Stack Overflow用户
提问于 2011-03-14 14:37:25
回答 3查看 297关注 0票数 0

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

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

可以这样说:

代码语言:javascript
复制
[ ("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), 
  ("denny", 0), ("mark",0) ]

通过函数运行它将返回

代码语言:javascript
复制
[("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3)]. 

但我不确定该怎么做。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-14 14:43:17

代码语言:javascript
复制
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)]

但真的,没必要让我想起那部电影。

票数 4
EN

Stack Overflow用户

发布于 2011-03-14 14:59:58

代码语言:javascript
复制
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的一个小变体

票数 1
EN

Stack Overflow用户

发布于 2011-03-14 14:59:42

@Ignacio Vazquez-艾布拉姆斯的答案的替代方案,使用列表理解:

代码语言:javascript
复制
>>> 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)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5295508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档