python - 遍历元组列表

标签 python loops iteration

我真的很感激对我的问题的一些意见 - 似乎无法使其工作。我需要遍历元组列表,例如:

li = [('a',1),('b',2),('c', 2),('d', 2), ('e', 3), ('f', 3), ('g', 1)]

并希望得到如下结果:

new_li = [('a', 1), ('bcd',2), ('ef',3), ('g',1)]

我根据元组中的第二个值连接字符串。我不想使用 itertools 中的 groupby,因为即使 g1 相关联,它也不是立即在 a 旁边。 感谢您的所有回复!

最佳答案

IIUC,您可以使用itertools.groupby,因为它按顺序分组:

例如:

from itertools import groupby
new_li = [
    ("".join(y[0] for y in g), x) for x, g in groupby(li, key=lambda x: x[1])
]
print(new_li)
#[('a', 1), ('bcd', 2), ('ef', 3), ('g', 1)]

groupby 的 keyfunc 从每个元组中获取数字。然后对于每个组,您可以使用 str.join 将字母连接在一起。

关于python - 遍历元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49786510/

相关文章:

scala - Spark : PageRank example when iteration too large throws stackoverflowError

用于获取文件夹结构和大小的 Python 代码

Python 将具有偶然模式的列表中的元素提取到元组中

java - 调用内部带有 for 循环的方法,而不更新变量

javascript - Angular - 如何优化代码以缩短加载时间?当前加载时间为 2.45 秒

php - 在正则表达式中循环

python - 使用 'in' 匹配数组中 Python 对象的属性

python - 在 Python 中,如何从一个或多个列表中删除重复项?

python - 将索引转换为日期时间并获取第 2 列最大值的时间

c# - 嵌套的 Foreach 循环运行次数太多 - C#