迭代元组列表

pyt*_*sta 4 python iteration loops

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

li = [('a',1),('b',2),('c', 2),('d', 2), ('e', 3), ('f', 3), ('g', 1)]
Run Code Online (Sandbox Code Playgroud)

并希望得到如下结果:

new_li = [('a', 1), ('bcd',2), ('ef',3), ('g',1)]
Run Code Online (Sandbox Code Playgroud)

我根据元组中的第二个值连接字符串.我不想使用groupby,itertools因为即使g与之相关1,也不是紧挨着a.感谢您的所有回复!

pau*_*ult 8

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)]
Run Code Online (Sandbox Code Playgroud)

groupby获取每个元组的数字的keyfunc .然后,对于每个组,您可以使用一起加入这些字母str.join.