在列表中对值进行分组

时间:2013-05-31 15:28:52

标签: python group-by

鉴于此清单:

['IND', 'MIA', '06:37 AM', '103', 'LA', 'SUN', '06:49 AM', '-150', '120']

我想将列表(make tuples)分组为最终结果:

[('IND', 'MIA', '06:37 AM', '103'), ('LA', 'SUN', '06:49 AM', '-150', '120')]

意味着一个组是一个以单词开头的值列表(实际上总会有2个连续的单词),这里:IND后跟一些其他值,直到另一个单词,这里:{{1} }。所有单词对都可能是完美的,例如这将是有效的列表:

LA

它也需要分组。你能提供一些整洁的解决方案吗?

1 个答案:

答案 0 :(得分:3)

采取假设:

  • 单词仅为字母字符串
  • 一个块以k个单词开头,k> = 1(显然是两个)
  • 列表元素的数据部分中没有单词

一种方法是按字和数据分组,然后构建列表理解以加入对:

import itertools as it
data = ['IND', 'MIA', '06:37 AM', '103', 'LA', 'SUN', '06:49 AM', '-150', '120']
g = it.groupby(data, str.isalpha)
[tuple(v)+tuple(next(g)[1]) for _, v in g]
相关问题