[英]Iterate over list of tuples
我真的很感激我的問題的一些意見 - 似乎無法使它工作。 我需要遍歷一個元組列表,例如:
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
,因為即使g
與1
相關聯,它也不會立即在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
將字母連接在一起。
從你的描述為什么你不想使用groupby
我推斷你實際上想要a
和g
組合在一起。 所以也許試試這個:
li = [('a',1),('b',2),('c', 2),('d', 2), ('e', 3), ('f', 3), ('g', 1)]
from collections import defaultdict
d = defaultdict(list)
for c,i in li:
d[i].append(c)
new_li = [(''.join(cs), i) for (i, cs) in d.items()]
print(new_li)
# output: [('ag', 1), ('bcd', 2), ('ef', 3)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.