簡體   English   中英

迭代元組列表

[英]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 ,因為即使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將字母連接在一起。

從你的描述為什么你不想使用groupby我推斷你實際上想要ag組合在一起。 所以也許試試這個:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM