python - 对列表内的值进行分组

标签 python group-by

给出这个列表:

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

我想对列表进行分组(创建元组)以获得以下最终结果:

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

表示组是一个以单词开头的值列表(实际上总是有 2 个连续的单词),此处:IND 后跟一些其他值,直至另一个单词,此处:洛杉矶。所有单词对可能都是相同的,例如这将是有效列表:

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

它还需要分组。您能提供一些巧妙的解决方案吗?

最佳答案

采取假设:

  • 单词仅是字母字符串
  • 一个 block 以 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]

关于python - 对列表内的值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16860832/

相关文章:

php - 按三列分组在 CodeIgniter 中不起作用

python - '\b' 字符如何存储在 python 的字符串中?

python : Which is the best way to find distance between two points based on latitude/longitude using python?

python - 什么是比 .grid() 更好的 Tkinter 几何管理器

mysql - 为了提高性能,使用带有日期年份的单独列是一种好做法吗?

group-by - DB2 中的 GROUP BY 和 RIGHT JOIN

python - 为一个范围组合系数?

python - BeautifulSoup:findAll 找不到标签

Postgresql - 按列组分组

SQL Group by Modulo of Row Count